排序概論——選擇排序

常見的排序:選擇排序,直接插入排序,冒泡排序,堆排序,快速排序,歸併排序
接下來的幾篇博客,我將挨個介紹每種排序算法的思想,實現,空間複雜度,時間複雜度以及每種之間的異同點

一、選擇排序
1.思想:給定一組記錄,第一輪遍歷得到最小的記錄,將該記錄與第一個記錄的位置進行互換,接着將不包含第一個記錄的所有記錄遍歷再得到一個最小值,該記錄與第二個位置的記錄互換,重複該過程,知道進行比較的記錄只剩一個爲止。
2.代碼實現:

import java.util.Arrays;
public class SeleceSort {
    public static void selectSort(int []array,int n){
        int min;//記錄最小值的位置
        int i,j;
        for(i=0;i<n-1;i++){
            min=i;//將每次遍歷的第一個數當做最小值
            for(j=i+1;j<n;j++){
                if(array[j]<array[min]) min=j;
            }
            //從for循環出來min是最小值的位置
            //如果min=i,min位置沒變,如果不等,交換位置,讓min始終是最小值的位置
            if(min!=i){
                int t=0;
                t=array[min];
                array[min]=array[i];
                array[i]=t;
            }
        }
    }
    public static void main(String[] args){
        int array[]={4,7,3,2,8,6,9,5};
        selectSort(array,array.length);
        System.out.println(Arrays.toString(array));
    }
}

3空間複雜度:O(1)
4.平均.時間複雜度:O(n^2)
5.是一種不穩定的排序算法,排序個數少的時候效率高

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章