一,概述
(1)簡單選擇排序是一種選擇排序。
(2)選擇排序:每趟從待排序的記錄中選出關鍵字最小的記錄,與當前位置的數值進行交換,直到所有數據有序排列完成。
二。算法思想
(1)從待排序序列中,找到關鍵字最小的元素;
(2)如果最小元素不是待排序序列的第一個元素,將其和第一個元素互換;
(3)從餘下的N - 1個元素中,找出關鍵字最小的元素,
重複(1),(2)步,到結束。
例如,一組無序數列:9 1 2 5 7 4 8 6 3 5
三.代碼
#include<stdio.h>
//每次和待排序 序列的 後面的元素 找到比當前數字 小的數值 進行交換
void Select(int *arr ,int len)
{
int minindex = 0;
int temp = 0;
for(int i = 0;i<len ;i++)
{
minindex = i;//設當前爲最小
for(int j =i+1 ;j<len; j++ ) //從i後面的數據找 ,因爲前面已經有序
{
if(arr[j]<arr[minindex]) ////arr[j](i 後面的數據)與mindex 進行比較 如果arr[j] 更小,交換數據
{
temp =arr[j];
arr[j] = arr[minindex];
arr[minindex] = temp;
}
}
}
}
void show(int *arr,int len)
{
for(int i =0;i<len;++i)
{
printf("%d\t",arr[i]);
}
}
int main()
{
int arr[]={7,3,4,6,4,2.876,3,53,346};
int len = sizeof(arr)/sizeof(arr[0]);
Select(arr,len);
show(arr,len);
getchar();
return 0;
}
四.時間複雜度和空間複雜度
由於要對元素進行交換改變,簡單選擇排序是一種不穩定的算法;
由於需要一個Temp來保存交換的臨時變量,所以空間複雜度爲O(1);