選擇排序:
演算法思想:
選擇排序的實現思路有點兒類似於插入排序,也是劃分為已排序區間和未排序區間,但是選擇排序每次是從未排序區找到最小的元素,然後放到已排序區間的末尾,僅此而已;
下面是我根據自己的理解畫的示意圖:
下面是**實現:
/**
* 選擇排序;
* 無序的一組數,每次從無序的數集中選擇最小的乙個數字,
* 新增到有序陣列的最後一位;直到無序陣列為空
* @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...
八大排序之選擇排序
每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到全部待排序的資料元素排完。選擇排序是不穩定的排序方法。每次掃瞄找到最小,到掃瞄到末尾,將本次掃瞄的最小放到左邊 注意與氣泡排序相比較...