Сортировка массива. - страница 2 12 Новый комментарий hrenfx 2010.12.24 17:18 #11 HIDDEN: Все приведенные коды не рабочие... Видимо, вы запускать не умеете. Тест: void start() { double Array[10] = { 50.24, -20.18, -30.55, 50.25, -19.18, -10.22, 40.45, -40.79, -50.12, 30.57 }; string Str = ""; SortByABS(Array, MODE_DESCEND); for(int i = 0; i < 10; i++) Str = Str + " " + DoubleToStr(Array[i], 2); Print(Str); return; } Результат: P.S. // Сортировка вектора по абсолютному значению элементов Vladyslav Goshkov 2010.12.24 18:27 #12 HIDDEN: Все приведенные коды не рабочие, т.е. не выполняют задачу максимум - минимам - максимум и т.д. если применять к следующему массиву (предварительная сортировка массива тоже не помогает). double Array[] = { 50.24, -20.18, -30.55, 50.25, -19.18, -10.22, 40.45, -40.79, -50.12, 30.57 }; Мой код пока еще справляется с задачей. Вот что получается... здесь не равное количество положительных и отрицательных чисел. а что не устраивает ? Nefedov Kirill 2010.12.24 23:09 #13 hrenfx: Видимо, вы запускать не умеете. Тест: Результат: P.S. // Сортировка вектора по абсолютному значению элементов Видимо, вы не поняли смысла задачи. VladislavVG Ваш код когда на новом массиве запускал не получил нужного результата, предварительную сортировку делал и по убыванию и по возрастанию. Сейчас запустить проверить не могу, но привиденная Вами строка правильная. Покапаю еще Ваш код. Помощь в кодировании Иметь цену открытия свечи OpenCL Vladyslav Goshkov 2010.12.25 10:12 #14 HIDDEN: Видимо, вы не поняли смысла задачи. VladislavVG Ваш код когда на новом массиве запускал не получил нужного результата, предварительную сортировку делал и по убыванию и по возрастанию. Сейчас запустить проверить не могу, но привиденная Вами строка правильная. Покапаю еще Ваш код. double Array[] = { 50.24, -20.18, -30.55, 50.25, -19.18, -10.22, 40.45, -40.79, -50.12, 30.57 };//{ 50, 40, 30, 20, 10, -10, -20, -30, -40, -50 }; double Array2[]; int start() { //---- int aSz = ArraySize(Array); ArrayResize(Array2,aSz); ArraySort(Array,WHOLE_ARRAY,0,MODE_DESCEND); int j=aSz-1; int i=0; for(int k=0;k<aSz;k+=2,i++,j--) { Array2[k] = Array[i]; Array2[k+1] = Array[j]; } //---- string rez = ""; for(k=0;k<aSz;k++) { rez= rez + DoubleToStr(Array2[k],4) + " "; } Print(rez); return(0); } или вот вариант: double Array[] = { 50.24, -20.18, -30.55, 50.25, -19.18, -10.22, 40.45, -40.79, -50.12, 30.57 };//{ 50, 40, 30, 20, 10, -10, -20, -30, -40, -50 }; double Array2[]; int start() { //---- int aSz = ArraySize(Array); ArrayResize(Array2,aSz); ArraySort(Array,WHOLE_ARRAY,0,MODE_DESCEND); int j=aSz-1; int i=0; //for(int k=0;k<aSz;k+=2,i++,j--) int k=0; while(i<j) { Array2[k] = Array[i]; Array2[k+1] = Array[j]; i++; j--; k+=2; } //---- string rez = ""; for(k=0;k<aSz;k++) { rez= rez + DoubleToStr(Array2[k],4) + " "; } Print(rez); return(0); } - результат идентичен 12 Новый комментарий
Все приведенные коды не рабочие...
Видимо, вы запускать не умеете.
Тест:
Результат:
P.S. // Сортировка вектора по абсолютному значению элементов
Все приведенные коды не рабочие, т.е. не выполняют задачу максимум - минимам - максимум и т.д. если применять к следующему массиву (предварительная сортировка массива тоже не помогает).
double Array[] = { 50.24, -20.18, -30.55, 50.25, -19.18, -10.22, 40.45, -40.79, -50.12, 30.57 };
Мой код пока еще справляется с задачей.
Вот что получается... здесь не равное количество положительных и отрицательных чисел.
а что не устраивает ?
Видимо, вы запускать не умеете.
Тест:
Результат:
P.S. // Сортировка вектора по абсолютному значению элементов
Видимо, вы не поняли смысла задачи.
VladislavVG Ваш код когда на новом массиве запускал не получил нужного результата, предварительную сортировку делал и по убыванию и по возрастанию.
Сейчас запустить проверить не могу, но привиденная Вами строка правильная. Покапаю еще Ваш код.
Видимо, вы не поняли смысла задачи.
VladislavVG Ваш код когда на новом массиве запускал не получил нужного результата, предварительную сортировку делал и по убыванию и по возрастанию.
Сейчас запустить проверить не могу, но привиденная Вами строка правильная. Покапаю еще Ваш код.
или вот вариант:
- результат идентичен