5.简单选择排序
简单选择排序,就是一种简单直观的排序方式,基本原理:第一次遍历时,将序列中最小的数与第一个位置的数进行交换;第二次遍历,将除去第一个数以外的所有数中最小数与第二个位置进行交换,直到最后只剩一个数;
以序列a[] = {29, 17, 35, 6, 12, 31, 28, 15}为例;
这种排序比较容易理解,直接附上代码:
#include <stdio.h>
void SelectSort(int arr[], int len)
{
int i, j, flag, tmp;
for(i = 0; i < len - 1 ; i++)
{
flag = i;
tmp = arr[i];
for(j = i + 1; j < len; j++)
{
//对当前最小数进行更新
if(arr[j] < tmp)
{
tmp = arr[j];
flag = j;
}
}
if(flag != i) //找到最小的数,并且这个数不是 i 本身时,进行交换
{
arr[flag] = arr[i];
arr[i] = tmp;
}
}
}
int main()
{
int i, length;
int a[] = {29, 17, 35, 6, 12, 31, 28, 15};
length = sizeof(a) / sizeof(a[0]);
SelectSort(a, length);
for(i = 0; i < length; i++)
{
printf("%d ", a[i]);
}
return 0;
}