簡單選擇排序是一種選擇排序。
選擇排序:每趟從待排序的記錄中選出關鍵字最小的記錄,順序放在已排序的記錄序列末尾,直到全部排序結束為止。
簡單排序很簡單,它的大致處理流程為:
動態效果示意圖:
舉例說明,處理過程示意圖如下所示:
如圖所示,每趟排序中,將當前第i小的元素放在位置i上。
c++:
執行結果:#include
#include
using
namespace std;
// 簡單選擇排序
vector<
int>
selectsort
(vector<
int> list)}if
(index == i)
// 將找到的第i個小的數值放在第i個位置上
swap
(result[i]
, result[index]);
cout <<
"第"<< i +
1<<
"趟:\t"
;for
(int i =
0; i < result.
size()
; i++
) cout << endl;
}return result;
}void
main()
; vector<
int>
test
(arr, arr +
sizeof
(arr)
/sizeof
(arr[0]
)); cout <<
"排序前"
<< endl;
for(
int i =
0; i < test.
size()
; i++
) cout << endl;
vector<
int> result;
result =
selectsort
(test)
; cout <<
"排序後"
<< endl;
for(
int i =
0; i < result.
size()
; i++
) cout << endl;
system
("pause");
}
函式說明:簡單選擇排序(公升序)
author:
www.cuijiahua.com
parameters:
input_list - 待排序列表
returns:
sorted_list - 公升序排序好的列表
'''iflen
(input_list)==0
:return
sorted_list = input_list
length =
len(sorted_list)
for i in
range
(length)
: min_index = i
for j in
range
(i +
1, length)
:if sorted_list[min_index]
> sorted_list[j]
: min_index = j
if min_index == i:
continue
temp = sorted_list[i]
sorted_list[i]
= sorted_list[min_index]
sorted_list[min_index]
= temp
return sorted_list
if __name__ ==
'__main__'
: input_list =[6
,4,8
,9,2
,3,1
('排序前:'
, input_list)
sorted_list = selectsort(input_list)
('排序後:'
, sorted_list)
執行結果同上。
補充乙個 python 實現:
def
select_sort
(ary)
: n =
len(ary)
for i in
range(0
,n):
min= i #最小元素下標標記
for j in
range
(i+1
,n):
if ary[j]
< ary[
min]
:min
= j #找到最小值的下標
ary[
min]
,ary[i]
= ary[i]
,ary[
min]
#交換兩者
其中,n2為n^2。
簡單選擇排序的比較次數與序列的初始排序無關。 假設待排序的序列有 n 個元素,則比較次數總是****n (n - 1) / 2。
而移動次數與序列的初始排序有關。當序列正序時,移動次數最少,為 0.
當序列反序時,移動次數最多,為3n (n - 1) / 2。
所以,綜合以上,簡單排序的時間複雜度為o(n^2)。
簡單選擇排序需要占用1個臨時空間,用於儲存最小值得索引。
排序演算法2 選擇排序
選擇排序 selection sort 通過多次比較和交換來實現排序,其排序流程如下 1.選取陣列中最小的乙個元素和陣列的第乙個元素交換。2.接著從剩下的所有元素中選擇最小的與第二個元素交換。3.和第二步同樣的方法對剩下的所有元素進行排序,最後便可得到按照從大到小的順序排好陣列中的各元素。具體過程如...
排序演算法2 選擇排序
選擇排序 最好最壞時間複雜度 n 2 public class selectsort 預設最小值 int min 0 記錄最小值下標 int minindex 0 for int i 0 i arr.length 1 i 發現最小值改變才進行交換 if min arr i system.out.pr...
排序演算法(2) 選擇排序 堆排序
繼續上篇的 交換排序 氣泡排序 快速排序,本篇介紹選擇排序和堆排序 一 選擇排序 非常的簡單直觀,每次找出最小或者最大的值儲存起來,繼續找剩下的值儲存起來,直達最後乙個元素。從arr 0 arr n 中找出最小的值,放在arr 0 此時arr 0 已經排好序 從arr 1 arr n 中找出最小的值...