您的位置:首页 > 编程语言 > C语言/C++

提高项目25.3选择排序

2016-07-07 22:35 295 查看
任务和代码:体验选择排序:改造(1)的程序,将bubble_sort(...)改为select_sort(...),排序算法由冒泡排序换作为选择排序,排序结果由降序变为升序,完成类似的任务。

/*
文件名:main.c
作者:小风景
完成日期:2016.7.7
问题描述:体验选择排序:改造(1)的程序,将bubble_sort(...)改为select_sort(...),排序算法由冒泡排序换作为选择排序,排序结果由降序变为升序,完成类似的任务。
程序输出:
*/

#include <stdio.h>

void select_sort(int a[],int n);
void output_array(int b[],int m);

int main( )
{
int a[20]={86,76,62,58,77,85,92,80,96,88,77,67,80,68,88,87,64,59,61,76};
int b[15]={27,61,49,88,4,20,28,31,42,62,64,14,88,27,73};
select_sort(a,20); //用选择排序法升序排序a中元素
output_array(a,20); //输出排序后的数组
select_sort(b,15); //用选择排序法升序排序b中元素
output_array(b,15); //输出排序后的数组
return 0;
}

void select_sort(int a[],int n)
{
int i,j,k;
int temp = 0;

for(i = 0;i < n - 1;i++)
{
k = i;
for(j = i + 1;j < n;j++)
{
if(a[j] < a[k])
{
k = j;
}

}

temp = a[k];
a[k] = a[i];
a[i] = temp;
}
}

void output_array(int b[],int m)
{
int i = 0;

printf("排序后的数组为:\n");
while(i < m)
{
printf("%d ",b[i]);
i++;
}
}


程序运行结果:



总结:对于n和元素的排序,需要进行n-1次比较,所以排序的最外层需要n-1次循环,在内层中选择排序的做法是:首先将第一个元素作为最小值,然后在后面的元素中查找到最小值,与第一个元素比较,如果比第一个元素小,则交换两个元素的位置,然后将第二个元素作为最小值,查找剩余元素中的最小值与第二个元素比较,如果比第二个元素小,再次交换,直到所有元素按照需要的顺序排列。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C语言 代码 函数