Java實現 八大排序之選擇排序 心得體會

2021-09-16 21:35:08 字數 871 閱讀 3567

選擇排序:

演算法思想:

選擇排序的實現思路有點兒類似於插入排序,也是劃分為已排序區間和未排序區間,但是選擇排序每次是從未排序區找到最小的元素,然後放到已排序區間的末尾,僅此而已;

下面是我根據自己的理解畫的示意圖:

下面是**實現:

/**

* 選擇排序;

* 無序的一組數,每次從無序的數集中選擇最小的乙個數字,

* 新增到有序陣列的最後一位;直到無序陣列為空

* @param data

*/public static void selectionsort(int data)else

}int temp = data[i];

data[i] = data[minindex];

data[minindex] = temp;}}

long end = system.currenttimemillis();

system.out.println("選擇排序的耗時為"+(end - start)+"毫秒");

}

簡單解釋一下**:

下面小結一下:

首先,選擇排序是原地排序,空間複雜度為o(1);

由選擇排序的實現**可以看出,不論資料集合是否有序,都要每次從未排序區間找到最小的元素然後插入到已排序區間;所以選擇排序的最好情況時間複雜度、最壞情況和平均時間複雜度等都是o(n^2);

穩定性:不穩定;舉個例子,有一列資料,5 3 7 5 2 6,第一次之間交換了第乙個元素5和2,然後第乙個5就跟原來資料中第四個5的相對位置發生了變化,所以說不穩定;

八大排序之選擇排序

個人部落格 建議先看排序綜述,傳送門 資料結構與演算法系列之一 八大排序綜述。選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末...

八大排序之選擇排序

思想 每一趟都從待排序的數列中選擇乙個最大 最小 的,放在數列的最後乙個位置 或起始位置 直到全部待排序的資料元素排完。選擇排序是不穩定的排序方法。例 9 5 3 4 6 2 8 1 7 0 if maxpos len 1 i 如果最大的元素就是在最後位置,就不用交換 int main int le...

八大排序之選擇排序

每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到全部待排序的資料元素排完。選擇排序是不穩定的排序方法。每次掃瞄找到最小,到掃瞄到末尾,將本次掃瞄的最小放到左邊 注意與氣泡排序相比較...