您的位置:首页 > 其它

选择排序 简单实现

2013-02-25 10:00 211 查看
#include <stdio.h>

void select_sort(int arr[],int len)
{
int i,j,min,index_of_min;
/*
* 遍历数据 遍历len-1次
* */
for(i = 0; i < len; i++)
{
/*
* 每次都先将遍历区间的第一个元素默认是最小的数
* min保存最小的数,index_of_min保存最小数的位置
* 第一次遍历区间是arr[0] ~ arr[len - 1]
* 第二次遍历区间是arr[1] ~ arr[len - 1]
*					.
*					.
*					.
* 第len - 1次遍历区间是arr[len - 2] ~ arr[len - 1]
* */
min = arr[i];
index_of_min = i;
/*
*从遍历区间的第二个数开始收索当前区间中的最小数
* */
for(j = i + 1; j < len; j++)
{
/*
* 如果发现区间中有比一开始默认假设的最小数还小的话
* 就将此数作为最小数,先保存到min和index_of_min中
* */
if(arr[j] < min)
{
min = arr[j];
index_of_min = j;
}
}
/*
* 把真正的最小数放到最小数的位置上
* */
arr[index_of_min] = arr[i];
arr[i] = min;
}
}

void show(int arr[],int len)
{
int i;
for(i = 0; i < len; i++)
printf("%d ",arr[i]);
printf("\n");
}

int main()
{
int data[] = {423,6,23,75,2,73,89,23};
int len = sizeof(data) / sizeof(data[0]);

show(data,len);
select_sort(data,len);
show(data,len);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C
相关文章推荐