排序算法 之 (简单选择排序)
10.5、简单选择排序
这个算法的思想很简单,每次选择从没有排序的元素中选择最小(大)元素放到到前(后)面
简单选择排序是不稳定的
简单选择排序代码实现
#include <stdio.h>
#include <stdlib.h>
#define boolean int
#define false 0;
#define true 1;
//简单选择排序:nums:待排序数组,length:数组长度
void SelectSort(int nums[],int length){
for(int i = 0;i < length-1;i++){
int min = i;
for(int j = i+1;j < length;j++){
if(nums[j] < nums[min]) min = j;
}
if(min != i){
int temp = nums[i];
nums[i] = nums[min];
nums[min] = temp;
}
}
}
int main(){
int nums[] = {49,38,65,97,76,13,27,47,89,13,48,76,88,88,99};
int length = 15;
printf("简单选择排序前:");
for(int i = 0; i < length ;i++){
printf("%d ",nums[i]);
}
SelectSort(nums,length);
printf("\n");
printf("简单选择排序后:");
for(int i = 0; i < length ;i++){
printf("%d ",nums[i]);
}
return 0;
}
//结果:
简单选择排序前:49 38 65 97 76 13 27 47 89 13 48 76 88 88 99
简单选择排序后:13 13 27 38 47 48 49 65 76 76 88 88 89 97 99