在乙個長度為n的無序陣列中,在第一趟遍歷n個資料,找出其中最小的數值與第乙個元素交換,第二趟遍歷剩下的n-1個資料,找出其中最小的數值與第二個元素交換……第n-1趟遍歷剩下的2個資料,找出其中最小的數值與第n-1個元素交換,至此選擇排序完成。
時間複雜度o(n^2) 不穩定的排序
void selectsort(int
array, int size)
if (array[min] < array[i])//如果找到的最小的數比下標i的數小,進行交換
i++;
}}int main()
; selectsort(array, 10);
for (int i = 0; i < 10; i++)
return
0;}
每次查詢時不僅找出最小值,還找出最大值,分別插到前面和後面,可以減少一半的查詢時間。
//選擇排序優化--每次找到最大最小兩個數。
void selectsortplus(int
array,int size)
if (array[max] < array[i])
if (array[min] < array[left])//如果找到的最小的left數比下標的數小,進行交換
if (array[max] > array[right])//如果找到的最大的數比下標right的數大,進行交換
}right--;
left++;
}}int main()
; selectsortplus(array, 10);
for (int i = 0; i < 10; i++)
return
0;}
七大排序演算法 選擇排序及其優化
思路 初步 public class myselectionsort selectionsort arr system.out.println arrays.tostring arr public static void selectionsort int arr swap arr,i,min pu...
七大排序演算法 快速排序及優化
快速排序 quick sort 也叫做分割槽排序,是目前應用最廣泛的排序演算法。在c 標準庫中的排序程式就被稱作qsort,因為快速排序是其實現中的最基本演算法。是一種不穩定的演算法。經過上面的 相信聰明的你們已經明白了快排的奧義 但是 這樣的排序演算法排序演算法有乙個致命的弱點,當序列已經是有序序...
七大排序演算法之選擇排序
和氣泡排序一樣,這個也是簡單而必須掌握的基礎排序演算法。遍歷陣列每個元素,若為公升序,則尋找最小的數與第乙個數交換,一趟排序結束後,最小的數字於陣列第乙個位置,然後在2 n個數中,尋找最小的元素放在第二個位置,往復下去,排序結束。固定 n n public class selectsort syst...