选择排序,C语言实现
每轮循环找出未排序区段中最小值,并将其交换至未排序区段首位
#include <stdio.h>
void selectsort(int num[],int len);
int main(){
int num[10] = {5,2,6,0,3,9,1,7,4,8};//待排序数组
selectsort(num,10);
for(int i = 0; i<10 ;i++){
printf("%d ",num[i]);
}
}
void selectsort(int num[],int len){
//对数组num进行选择排序,len为数组长度,从小到大排序,O(n^2),不稳定
/*核心思想,每轮循环从未排序区段中找出最小元素值
,将其与此区段起始元素值交换
*/
int i,j,min,temp;//min为每轮循环最小元素值的下标
for(i=0; i<len-1; i++){//从0号开始到倒数第二号
min = i;
for(j=i+1; j<len; j++){//循环找出未排序区段最小值
if(num[j] < num[min]){//如果num[j]为当前最小
min = j;//将最小元素值下标min的值改为j
}
}
//此时num[min]就是未排序区段的最小值,将其交换至区段最前
temp = num[min];
num[min] = num[i];
num[i] = temp;
}
}