java經典演算法 - 選擇排序
阿新 • • 發佈:2020-12-07
目錄
一、前言
選擇排序是一種簡單直觀的排序演算法。它的工作原理:首先在未排序序列中找到最小元素(本文以增序為例),存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
二、演算法描述
n個記錄的直接選擇排序可經過n-1趟直接選擇排序得到有序結果。具體演算法描述如下:
1、第1趟排序開始時:有序區為空,無序區為arr[0,n-1];
2、第i趟排序(i=2,3…n-1)開始時,有序區為arr[0,i-2],無序區為arr[i-1,n-1]。該趟排序從當前無序區中選出關鍵字最小的記錄 arr[k],將它與無序區的第1個記錄arr[i-1]交換,使arr[0,i-1]和arr[i,n-1]分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區;
3、n-1趟結束,陣列有序化了。
三、動圖演示
四、程式碼實現
public void selectionSort(int[] arr) { int len = arr.length; int minIndex; for (int i = 1; i < len; i++) { minIndex = i - 1; for (int j = i; j < len; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } int tmp = arr[i - 1]; arr[i - 1] = arr[minIndex]; arr[minIndex] = tmp; } }
五、總結
時間複雜度:O()
空間複雜度:O(1)
穩定性:不穩定