選擇排序算法解析

選擇排序是遍歷列表,然後每次將最大或者最小的數保存到新的列表,這樣就得到了排好序的列表。選擇排序時間複雜度爲O(n^2)

實現選擇排序的基本步驟如下:

  1. 先從第一個元素開始,相鄰的兩個元素進行比較,最後得出第一次比較中最小的元素;
  2. 記錄好這個最小元素的位置,並把這個元素與第一個元素互換位置;
  3. 接着再從第二個元素開始,相鄰的兩個元素再進行比較,得出第二次比較中最小的元素;
  4. 記錄好這個最小元素的位置,並把這個元素與第二個元素互換位置;
  5. 如此類推…最終實現有序排列。

使用java實現選擇排序示例代碼

package com.zjx.algorithm;

public class SelectionSort {

    private static void selectionSort(int[] array){
        for(int i=0;i < array.length-1;i++){
            int index = i;
           for(int j = i+1;j< array.length;j++){
               //如果第一個元素比第二個元素大,則這兩個互換位置,並記錄最小元素的位置,注意與冒泡排序的區別
               if(array[index] > array[j]){
                   index = j;
               }
           }
           //交換位置
            if(index != i){
                int temp = array[i];
                array[i] = array[index];
                array[index] = temp;
            }
        }
    }

    public static void main(String[] args) {
        int[] array = {11,1,2,5,4,7,3,9,8,6};
        selectionSort(array);
        for (int i = 0;i <array.length;i++){
            System.out.println(array[i]);
        }
    }
}


使用Python實現選擇排序示例

### 選擇排序

def findSmallest(arr):
    smallest = arr[0]
    smallest_index = 0;
    for i in range(1,len(arr)):
        if(arr[i] < smallest):
            smallest = arr[i]
            smallest_index = i
    return smallest_index;

def selectionSort(arr):
    newArr = []
    for i in range(len(arr)):
        smallest = findSmallest(arr)
        newArr.append(arr.pop(smallest))
    return newArr


print(selectionSort([7, 3, 6, 8, 10, 34, 21, 4]))

發佈了94 篇原創文章 · 獲贊 94 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章