排序演算法之選擇排序 SelctionSort

2021-10-23 15:02:00 字數 541 閱讀 8885

在長度為n的無序陣列,第一次遍歷n-1個數,找到最小的數值與第乙個元素交換,第二次遍歷n-2個數,找到最小的數值與第二個元素交換;。。。第n-1次遍歷,找到最小的數值與第n-1個元素交換,排序完成。

如上圖所示,以一組資料為例

先選擇最小元素1交換到陣列頭部,則原陣列分為:已排序序列和未排序序列。

在未排序序列選最小元素3,交換到已排序序列中。

重複第二步,直到未排序序列數量為0,排序完成。

#include

int main()}}

printf("\n排序後順序:\n");

for(i=1;i<=10;i++)

printf("%5d",a[i]);

printf("\n");

#include

int main()

{int i,j,t,a[10];

for(i=0;i<9;i++)

{int min=i;

for(j=i+1;j<10;j++)

{if(a[j]當輸入規模n較小時,應該使用選擇排序或者插入排序。

排序演算法 排序演算法之選擇排序

最近在學習排序演算法,就排序演算法中的四大經典排序 氣泡排序 快速排序 選擇排序 插入排序。會出一系列的講解排序演算法的部落格。今天繼快速排序之後整理一下選擇排序。選擇排序,就是從一列未排序的陣列中先選出最小 最大 的數,放在陣列的第一位,第一位原來的數字放在最小的原來的位置,再選出第二小的數,放在...

排序演算法之選擇排序 選擇排序 堆排序

直接選擇排序 如下 下面 是一次迴圈同時挑選出最大和最小數,並將其與左右交換 選擇排序 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 用於...