标签: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