如果我想第二個維度的元素0排序這樣的:C++數組值排序
short arr[5];
arr[0][0] = 122;
arr[0][1] = 33;
arr[0][2] = 45;
arr[1][0] = 33;
arr[1][1] = 12;
arr[1][2] = 42;
.
.
.
它將排序arr[i][0]
,但arr[i][1]
和arr[i][2]
將拿出arr[i][0]
到一個新的元素。
如果我想第二個維度的元素0排序這樣的:C++數組值排序
short arr[5];
arr[0][0] = 122;
arr[0][1] = 33;
arr[0][2] = 45;
arr[1][0] = 33;
arr[1][1] = 12;
arr[1][2] = 42;
.
.
.
它將排序arr[i][0]
,但arr[i][1]
和arr[i][2]
將拿出arr[i][0]
到一個新的元素。
這會幫助你:使用std::sort
算法 http://www.cplusplus.com/reference/algorithm/sort/
要按一個標準的C數組:
#include <algorithm>
...
sort(&arr[0], &arr[0] + 5)
現在,如果你有一個二維數組,你可以使用同樣的想法進行排序每個項目在第一維的第二維:
short arr[5][5];
...
for(int i = 0; i < 5; ++i) {
sort(&arr[i][0], &arr[i][0] + 5);
}
std::sort
will,默認情況下,按升序排序對象。若要按降序排列,您可以使用std::greater
函數對象:
std::sort(arr, arr + 5, std::greater<short>());
有太多的排序算法,快速排序一樣和冒泡排序,具有不同的複雜性。這種複雜性隨數據集的大小,數據集內數據的默認順序等而異。您必須研究您的數據集並選擇一種能夠更快地滿足您的需求的算法。您可以在http://en.wikipedia.org/wiki/Sorting_algorithm中找到排序算法。
考慮到標準庫有'sort'(平均情況N log N)和'stable_sort'(最壞情況N(log N)^ 2),很少有很好的理由來實現你自己的排序算法。 – 2010-07-23 21:40:58
如果這是一項家庭作業,您可能不想使用std::sort
。你的老師可能會認爲你厚顏無恥:P
我願意跟Muhit說的一樣,並嘗試從Wikipedia的排序算法文章中學習,http://en.wikipedia.org/wiki/Sorting_algorithm。大多數單獨的文章都以僞代碼實現了算法,因此您可以選擇一個代碼進行編碼。
但是,如果這是一個不同的項目,是的,肯定會去STL,應該沒有任何理由現在手動編碼排序算法。
這不是一項家庭作業。 – sundowatch 2010-07-24 09:05:36
使用C++'vector <>'而不是C風格的數組 - 然後您可以應用'sort'方法。如果*由於某種原因*必須*使用C風格的數組,那麼使用'cstdlib'中的'qsort()'進行排序。 – 2010-07-23 21:29:15
@Paul:'sort'是一種通用的非成員函數算法。它可以像使用'vector'一樣方便地與數組一起使用。 – 2010-07-23 21:31:14
您聲明瞭一維數組並正在將其作爲二維數組進行訪問?你想在這裏做什麼? – bta 2010-07-23 22:02:46