1. 程式人生 > >算法一之簡單選擇排序

算法一之簡單選擇排序

!= 復雜度 cnblogs 數據 lec 空間 class 相同 i++

一、 選擇排序的思想

選擇排序的基本思想是:每一趟在n-i+1(i=1,2,…n-1)個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄。基於此思想的算法主要有簡單選擇排序樹型選擇排序堆排序。 簡單選擇排序的基本思想:第1趟,在待排序記錄r[1]~r[n]中選出最小的記錄,將它與r[1]交換;第2趟,在待排序記錄r[2]~r[n]中選出最小的記錄,將它與r[2]交換;以此類推,第i趟在待排序記錄r[i]~r[n]中選出最小的記錄,將它與r[i]交換,使有序序列不斷增長直到全部排序完畢。

二、算法實現

public void selectionSort(int
[] data){ int minIndex; //最小記錄下標 int temp; //臨時空間 //data.length-1趟 for(int i=0;i<data.length-1;i++){ //在i到data.length-1中匹配最小記錄 minIndex=i; //默認最小值為第一個記錄 for(int j=i+1;j<data.length;j++){ //保存最小記錄的下標 if
(data[minIndex]>data[j]){ minIndex=j; } }

//最小記錄不在下標i處,互交換數據 if(minIndex!=i){ temp =data[i]; data[i]=data[minIndex]; data[minIndex]=temp; } } }

三、復雜度

簡單選擇排序中,所需進行記錄移動

的操作次數較少,其最小值為“0”,最大值為3(n-1)。

然而,無論記錄的初始序列如何,所需進行的關鍵字間的比較次數相同,均為n(n-1)/2,因此,總的時間復雜度為O(n2)

算法一之簡單選擇排序