1.8 简单选择排序
1.8.1 介绍
简单选择排序法(Simple Select Sort),它的基本思想是:第一次从arr[0] ~ arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[1] ~ arr[n-1]中选取最小值,与arr[1]交换,第三次从arr[2] ~ arr[n-1]中选取最小值,与arr[2]交换,…,第i次从arr[i-1] ~ arr[n-1]中选取最小值,与arr[i]交换,…;,第n-1次从arr[n-2] ~ arr[n-1]中选取最小值,与arr[n-2]交换,总共通过n-1次,得到一个按排序规则排列的有序序列。
1.8.2 原理
选择排序的原理:
1.8.3 简单选择排序实现
注:sort.h 在c语言排序总结—前序准备中
选择排序的代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include "sort.h"
int main() {
//生成LENGTH长度的随机数组,并展示出来
int arr[LENGTH];
createRandomArray(arr);
int count = 0;
for (int i = 0; i < LENGTH; i++) {
printf("%-10d", arr[i]);
count++;
if (count % 10 == 0) {
printf("\n");
}
}
printf("\n");
//统计排序的时间
int begin, end;
begin = clock();
//调用排序
simpleSelectSort(arr);
end = clock();
//输出排序结果
for (int i = 0; i < LENGTH; i++) {
printf("%-10d", arr[i]);
count++;
if (count % 10 == 0) {
printf("\n");
}
}
//输出排序时间
printf("排序时间为time=%d\n", end - begin);
system("pause");
}
void simpleSelectSort(int arr[]) {
int i, j;
int min;
for (i = 0; i < LENGTH; i++) {
min = i;
for (j = i + 1; j < LENGTH; j++) {
if (arr[i] > arr[j]) {
min =j;
}
}
swap(arr, i, min);
}
}
选择排序在10000数据量下的耗时结果为192毫秒: