交换排序的基本原则是通过两个数之间互相交换来实现的。选择排序中也要交换,可它的核心在选择。选择排序
的基本思想就是:每一次遍历都从待排序的数据元素中选出最小(或最大)的记录,按顺序放在已排序的记录序列后
面。选择排序的原理很简单,是一般常用的排序方法,但是由于其稳定性不高,所以实际应用中用到的并不多。接下
来就介绍一下选择排序中的简单选择排序。
算法实现:
/********简单选择排序*********/
#include<stdio.h>
void SelectSort(int array[], int n);
void main()
{
int array[10] = {49, 38, 65, 97, 13, 27, 76, 85, 56, 100};
SelectSort(array, 10); //函数调用
for (int i =0 ; i < 10; i++)
{
printf("%d ",array[i]);
}
printf("\n");
}
void SelectSort(int array[] ,int n) //选择排序算法
{
int i,j;
int temp; //设置中间变量
for (i = 0; i < n-1; i++)
{
int k = i; //设置变量k保存下标值
for (j = i + 1; j < n; j++ )
{
if (array[k] > array[j]) //从后面的数里找到一个最小的和第一个数比较,并记录下该数的下标值
{
k=j;
}
}
if (k!=i) //将找到的数和第一个数进行交换
{
temp = array[k];
array[k] = array[i];
array[i] = temp;
}
}
}
运行结果:
总结:
简单选择排序的算法比较简单,应用的原理和交换排序有所不同,它是减少了交换,而增加了选择的次数,其实
本质还是不变的,下一次会介绍建立在完全二叉树上的堆排序,更会有不一样的排序思想和算法!