庖丁解題 排序演算法之選擇排序剖析

2021-09-03 01:20:08 字數 921 閱讀 4529

從0索引開始,依次和後面元素比較,小的往前放,第一次完畢,最小值出現在了最小索引處。其它的同理,即可得到乙個排好序的陣列。

第一輪:索引為0的元素按照順序分別與其他索引元素進行比較,如果arr[0]>arr[i],交換他們之間的元素值,如下圖

第二輪:索引為1的元素按照順序分別與其他索引元素進行比較,如果arr[1]>arr[i],交換他們之間的元素值,如下圖

第三輪:索引為2的元素按照順序分別與其他索引元素進行比較,如果arr[2]>arr[i],交換他們之間的元素值,如下圖

第四輪:索引為3的元素按照順序分別與其他索引元素進行比較,如果arr[3]>arr[i],交換他們之間的元素值,如下圖

經過四輪排序,可以發現我們的陣列已經按照公升序排好序了。

根據上述,可以先把每輪的有**實現

int x=0;//標記用於比較的起始索引

for (int y=x+1;yarr[y])

}

int x=1;//標記用於比較的起始索引

for (int y=x+1;yarr[y])

}

int x=2;//標記用於比較的起始索引

for (int y=x+1;yarr[y])

}

int x=3;//標記用於比較的起始索引

for (int y=x+1;yarr[y])

}

轉化成迴圈表示如下:

/**

* 選擇排序

* @param arr

* @return

*/public static int selectsort(int arr)}}

return arr;

}

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

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

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

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