選擇排序是最簡單直觀的一種演算法,基本思想為每一趟從待排序的資料元素中選擇最小(或最大)的乙個元素作為首元素,直到所有元素排完為止,簡單選擇排序是不穩定排序,平均時間複雜度為o(n
2)
o(n^2)
o(n2)。
主要思路:在演算法實現時,每一趟確定最小元素的時候會通過不斷地比較交換來使得首位置為當前最小,交換是個比較耗時的操作。其實我們很容易發現,在還未完全確定當前最小元素之前,這些交換都是無意義的。我們可以通過設定乙個變數min,每一次比較僅儲存較小元素的陣列下標,當輪迴圈結束之後,那這個變數儲存的就是當前最小元素的下標,此時再執行交換操作即可。**實現很簡單,一起來看下。
/**
* 簡單選擇排序
** @param arr
**/#pragma once
#include
using
namespace std;
template
<
typename t>
void
selection_sort
(std::vector
& arr)
//如果min發生變化,則進行交換
if(i!=min)
}}
演算法學習之排序 選擇排序(Java)
public class selectsort int temp array i array i array leastindex array leastindex temp public static void main string args select array for int a 0 a...
演算法學習筆記 排序之選擇排序
選擇排序需要額外的儲存空間,且排序的時間為o n 2 其實為o 1 2 n 2 但是常數可以省略。選擇排序每次都遍歷一遍剩下的數,然後選出最小的乙個數放到排序好的儲存空間中去。python中沒有陣列,所以用列表 list 代替。def find smallest array smallest arr...
經典演算法學習 直接選擇排序
直接選擇排序和直接插入排序類似,都將資料分為有序區和無序區,所不同的是直接插入排序是將無序區的第乙個元素直接插入到有序區以形成乙個更大的有序區 而直接選擇排序是從無序區選乙個最小的元素直接放到有序區的最後。示例 上傳至 演算法描述如下 1 初始時,陣列全為無序區為a 0.n 1 令i 0。2 在無序...