选择排序C语言实现

选择排序:一种重要的基于交换的排序算法。
基本思想:序列分为有序和无序两个子序列,每次从无序列种选择最小的和有序列最后一个交换。
大致过程:
[9, 12  4  0 7 21  3  5]  --> 0最小和9交换
[0  12, 4  9 7 21  3  5]  --> 3最小和12交换
[0   3   4, 9 7 21 12 5]  --> 4已经是最小,继续
......
//头文件
#include <stdio.h> 
#include <stdlib.h>

//自定义类型
typedef int ElemType;

//函数声明
void SelectSort(ElemType *, int);

//主函数,程序入口
int main(void) {
	ElemType a[8] = {9, 12, 4, 0, 7, 21, 3, 5};
	SelectSort(a, 8);
	int i;
	for (i = 0; i < 8; ++i) {
		printf("%d  ", a[i]);
	}
	
	return EXIT_SUCCESS;
}

//选择排序 
void SelectSort(ElemType *a, int n) {
	int i;
	int j;
	ElemType minValue;
	int minIndex;
	ElemType temp;
	for (i = 0; i < n - 1; ++i) {
		//每一趟认为第一个是最小的 
		minIndex = i;
		minValue = a[minIndex];
		for (j = i + 1; j < n; ++j) {
			if (a[j] < minValue) {
				minValue = a[j];
				minIndex = j;
			}
		}
		
		//第一个和最小的交换 
		temp = a[i];
		a[i] = a[minIndex];
		a[minIndex] = temp;
	}
}

点赞