Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как отсортировать массив по порядку без sort()
 
 автор: Vasyanew   (29.07.2011 в 23:36)   письмо автору
 
 

Скажите как массив из несколька чисел int отсортировать от меньшего к большему не употребляя функцию sort()?
Заранее спасибо.

  Ответить  
 
 автор: Valick   (30.07.2011 в 00:06)   письмо автору
 
   для: Vasyanew   (29.07.2011 в 23:36)
 

трыдать колотить)) ну можно конечно написать сравнение элементов массива, но чем вам стандартные функции то по перек горла?

  Ответить  
 
 автор: Vasyanew   (30.07.2011 в 00:19)   письмо автору
 
   для: Valick   (30.07.2011 в 00:06)
 

Задание такое дали. Сам понимаю что вы мне сейчас сказали.

  Ответить  
 
 автор: Valick   (30.07.2011 в 00:29)   письмо автору
 
   для: Vasyanew   (30.07.2011 в 00:19)
 

лет 15 назад я подобное ваял, щас нуно вспоминать оптимальный алгоритм))
завтра прикину детородный орган к носу и попытаюсь разродиться кодом :)))

  Ответить  
 
 автор: Vasyanew   (30.07.2011 в 01:42)   письмо автору
 
   для: Valick   (30.07.2011 в 00:29)
 

Был бы очень благодарен, заранее спасибо.

  Ответить  
 
 автор: Valick   (01.08.2011 в 08:30)   письмо автору
 
   для: Vasyanew   (30.07.2011 в 01:42)
 

Вот немного усовершенствованный классический вариант сортировки

<?php
$a
=array("one"=>13,11,12,19,14,16,"seven"=>17,15,10,18);
echo 
"<PRE>";
print_r($a);
echo 
"</PRE>";
if(
is_array($a)){
    
$c=count($a)-1;
do{
    
reset($a);
    
$f=false;
    for(
$i=0;$i<$c;$i++){
        
$n=each($a);
        
$q=current($a);
        
$k=key($a);
        if(
$n[1] <= $q) continue;
        
$a[$n[0]]=$q;
        
$a[$k]=$n[1];
        
$f=true;
    }
}while(
$f);
}
echo 
"<PRE>";
print_r($a);
echo 
"</PRE>";
?>

классический вариант завязан на индексный массив, этому скрипту без разницы какой массив

  Ответить  
 
 автор: Max_Ivanov   (30.07.2011 в 01:57)   письмо автору
 
   для: Vasyanew   (29.07.2011 в 23:36)
 

<?
$array 
= array(4542366525889);
$count count($array);
$arr = array();

for(
$i 0$i<$count$i++) {

  
$min min($array);
    
$key array_search($min$array);
    unset(
$array[$key]);
  
    
$arr[] = $min;

}

print_r($arr);

  Ответить  
 
 автор: Vasyanew   (30.07.2011 в 02:51)   письмо автору
 
   для: Max_Ivanov   (30.07.2011 в 01:57)
 

СПАСИБО!!!

  Ответить  
 
 автор: Valick   (30.07.2011 в 11:48)   письмо автору
 
   для: Max_Ivanov   (30.07.2011 в 01:57)
 

халтура!!!))
за такое точно пару схлопочет от препода :)
я думаю весь смысл задания был в использовании простейших операций сравнения
__
и к стати почему for а не foreach?

  Ответить  
 
 автор: cheops   (30.07.2011 в 11:58)   письмо автору
 
   для: Valick   (30.07.2011 в 11:48)
 

>и к стати почему for а не foreach?
Массив индексный, зачем же в этом случае foreach, который сигнализирует об использовании ассоциативного массива...

PS Коль уж выступаете с критикой, приводите свое конструктивное решение :), не предоставив своего не принятно как-то у профессионалов нападать...

  Ответить  
 
 автор: Valick   (30.07.2011 в 12:31)   письмо автору
 
   для: cheops   (30.07.2011 в 11:58)
 

кому сигнализирует?) foreach вроде как "без рода и звания", предназаначен для обода массива, любого массива.
ну а над алгоритмом я работаю, точнее над уменьшением числа итераций, сам алгоритм вроде как уже давно известен

  Ответить  
 
 автор: Max_Ivanov   (30.07.2011 в 12:56)   письмо автору
 
   для: Valick   (30.07.2011 в 11:48)
 

foreach медленнее чем for да и к тому же там не используются переменные производные от массива, там просто цикл нужно было запустить

если уж меня for то на это

<?
while($array) { 

    
$min min($array); 
    
$key array_search($min$array); 
    unset(
$array[$key]); 
   
    
$arr[] = $min



  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования