标签:c语言、选择排序
------------------------------------------------------------------------------------------------------
选择排序:是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[2, 2, 0]第一次就将第一个[2]与[0]交换,导致第一个2挪动到第二个2后面)。
------------------------------------------------------------------------------------------------------
C语言代码如下:
# include <stdio.h>
# include <stdlib.h>
# include <string.h>
void sort(int a[], int x)
{
int m, n, k, ret=0;
for (m = 0; m < x - 1; m++) /*嵌套循环实现一个数与剩下的数一一比较*/
{
k = m;
for (n = m + 1; n < x; n++)
{
if (a[n]<a[k])
{
k = n;
}
}
ret = a[k]; /*将最小值和第一个数交换位置*/
a[k] = a[m];
a[m] = ret;
}
}
int main()
{
int arr[10] = {3,6,13,9,2,1,18,30,20,10};
int len = 10;
int i;
printf("排序前的数列:");
for (i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
sort(arr,len);
printf("排序后的数列:");
for (i = 0; i < 10; i++)
{
printf("%d ",arr[i]);
}
printf("\n");
system("pause");
return 0;
}
----------------------------------------------------------------------------------------
干货小知识:getchar()的返回值为int型;一般用(c=getchar()!=EOF)来判断输入是否结束,而char类型不一定能容纳EOF的值,所以用int接受返回值。C99:char一般用于存放基本执行字符集,其值为正;其他存放于char的值由现实定义。而EOF的值在<stdio.h>中定义,具体值只要与字符集不同即可,C99定义其值为一个int型负值的宏;有的将EOF定义为-1,如果你的编译器char类型为unsigned则返回值为-1时无法用char接收,如果是signed则可以接收。但是,为了提高程序的可移植性,则统一将char的返回值用int型来接收。
----------------------------------------------------------------------------------------
本文出自 “无名小卒” 博客,请务必保留此出处http://814193594.blog.51cto.com/10729329/1702555
标签:c语言、选择排序
原文地址:http://814193594.blog.51cto.com/10729329/1702555