排序演算法四 直接選擇排序__資料結構與演算法

來源:互聯網
上載者:User
1、直接選擇排序概念:

從無序區中選一個最小的元素直接放到有序區的最後。

直接選擇排序和直接插入排序類似,都將資料分為有序區和無序區,所不同的是直接插入排序是將無序區的第一個元素直接插入到有序區以形成一個更大的有序區,而直接選擇排序是從無序區選一個最小的元素直接放到有序區的最後。 2、直接選擇排序特性:

時間複雜度:O(n^2)(最好時間複雜度:O(n^2) 最壞時間複雜度O(n^2) )

空間複雜度:O(1)

穩定性:不穩定

註:

(1)選擇排序和冒泡排序的每一趟後,都有一個元素位於最終的位置。(最左或最右)

(2)選擇排序過程中的比較次數與序列的初始狀態無關,所有最好和最壞的時間複雜度都為O(n^2)

3、實現步驟:

設數組為arr[0...n-1]

1.初始化數組全為無序區arr[0...n-1]。令i=0

2.在無序區arr[0...n-1]中選取一個最小的元素,將其與arr[i]交換,交換之後arr[0...i]就形成了一個有序區。

3.i++並重複第二步直到i==n-1,排序完成。

例如:序列{38,97,26,19,38*,15}的直接選擇排序過程如下圖:


4、java代碼實現

public void SelectSort(int[] arr){      int n = arr.length;      for(int i = 0;i<n;i++){          int minIndex = i;//設定最小元素的位置          for(int j = i+1;j<n;j++){              if(arr[j]<arr[minIndex]){                   minIndex = j;              }           }           //將這個元素放到無序區的開頭           int temp = arr[i];           arr[i] = arr[minIndex];           arr[minIndex] = temp;      }}



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.