選擇排序是一種簡單直觀的排序演算法,無論什麼資料都是o(n^2)的時間複雜度。所以用到它的時候,資料規模越小越好。
從陣列中找出最小的那個元素,然後與最開始的元素交換位置
忽略第一步中找到的最小元素,重複執行步驟1
}swap(i, minindex); // 將最小元素交換到開始位置
}也可以挑選出最大元素,與最後的元素的交換,實現**如下:
for (int end = array.length - 1; end > 0; end--)
}swap(maxindex, end); // 將最大元素交換到最後位置
}
選擇排序的交換次數要遠遠少於氣泡排序,平均效能優於氣泡排序。
最好、最壞、平均時間複雜度:o(n^2)。
空間複雜度:o(1)。
選擇排序是乙個不穩定的排序演算法,看下面的例子:
選擇排序每次迴圈中都需要找出最小(大)的元素與開始(最後)位置的元素進行交換,可以使用大頂堆來實現查詢最大元素,可以將查詢元素的時間複雜度由o(n)降低為o(logn),其實就是堆排序。
選擇排序演算法 對乙個陣列進行選擇排序
include include include define number 10 number為陣列的大小 void selectionsort int int void display int int int main srand time null printf 排序前 display num,...
排序演算法(一) 選擇排序
一 原理 每一趟排序 例如第 i 趟,其中 i 0,1,n 2 在後面 n i 個待排記錄中選出關鍵字最小的元素 下標為 index 與第 i 個記錄交換,直至全部待排序的資料元素排完。由於排到 n 1 趟時,前 n 1 個元素已然有序,則剩餘的乙個元素自然也有序,因此一共需要排 n 1 趟 外層迴...
希爾排序是一種穩定的排序演算法 排序演算法之希爾排序
希爾排序是希爾 donald shell 於1959年提出的一種排序演算法。希爾排序也是一種插入排序,它是簡單插入排序經過改進之後的乙個更高效的版本,也稱為縮小增量排序,同時該演算法是衝破o n2 的第一批演算法之一。簡單插入排序很循規蹈矩,不管陣列分布是怎麼樣的,依然一步一步的對元素進行比較,移動...