選擇排序演算法思想:
在未排序的序列中找到最小的元素,放在第乙個位置
從剩餘未排序的元素中繼續尋找最小的元素,放在已排序序列的末尾
重複第二步,直到所有元素排序完畢
原始序列:51,14,43,8,35,22
1)將序列分為有序和無序兩部分,剛開始都是無序序列,進行第一次排序
結果:( 8 )(51、43、14、35、22 )
2)進行第二次排序
結果:( 8、14 ) (51、32、35、22)
3)進行第三次排序
結果:( 8、14、22 )(51、43、35)
4)進行第四次排序
結果:(8、14、22、35)(51、43)
5)進行第五次排序
結果:(8、14、22、35、43)51
我們發現,陣列長度為6的陣列,我們只需進行5次排序即可。
長度為n的陣列,最多隻需進行n-1次排序即可。
我們對每次排序進行程式設計
結果為:
我們會發現,索引每次都增加1,我們可以寫乙個外迴圈,把重複的部分包含在內
選擇排序**實現:
排序演算法 排序演算法之選擇排序
最近在學習排序演算法,就排序演算法中的四大經典排序 氣泡排序 快速排序 選擇排序 插入排序。會出一系列的講解排序演算法的部落格。今天繼快速排序之後整理一下選擇排序。選擇排序,就是從一列未排序的陣列中先選出最小 最大 的數,放在陣列的第一位,第一位原來的數字放在最小的原來的位置,再選出第二小的數,放在...
排序演算法之選擇排序 選擇排序 堆排序
直接選擇排序 如下 下面 是一次迴圈同時挑選出最大和最小數,並將其與左右交換 選擇排序 void selectionsort int a,int len swap a min a left 如果最大數的下標在為left,證明要交換的最大數已經被 換到min小標所表示的位置,只需要將right和min...
排序演算法之選擇排序
選擇排序 在乙個長度為n的無序陣列中,在第一趟遍歷n個資料,找出其中最小的數值與第乙個元素交換,第二趟遍歷剩下的n 1個資料,找出其中最小的數值與第二個元素交換.第n 1趟遍歷剩下的2個資料,找出其中最小的數值與第n 1個元素交換,至此選擇排序完成。平均時間複雜度 o n2 空間複雜度 o 1 用於...