/** ** @author:hushunfeng ** 选择排序,从大到小排列 */ #include<stdio.h> //在所给数组的一段区间内计算出最大值 //并得到其最大元素的下标 int getMaxIndex(int array[],int k,int len) { //每一轮最大值所在的下标 int index = 0; int tempMax; int i; for(i=k;i<len;i++) { if(array[i]>tempMax) { tempMax = array[i]; index = i; } } //return return index; } //每轮得到的最大元素和所在区间最前面的元素进行互换 void swapElement(int array[],int index,int k) { int temp; temp = array[k]; array[k] = array[index]; array[index] = temp; } //程序入口 void main() { //定义输入的整型数组长度为10 #define LEN 10 int array[LEN]; int index; int k; int i; int count; printf("请输入%d个整型数据:",LEN); for(count=0;count<LEN;count++) { scanf("%d",&array[count]); } for(k=0;k<(LEN-1);k++) { index = getMaxIndex(array,k,LEN); swapElement(array,index,k); } printf("输入的数据从大小排序为:"); for(i=0;i<LEN;i++) { printf("%d ",array[i]); } }
/** ** @author:hushunfeng ** */ #include<stdio.h> void swap(int *a,int *b) { int temp; temp = *a; *a = *b; *b = temp; } //选择排序,从小到大进行排列 void chooseSort(int *array,int arraySize) { int min ; int i; int j; //每一轮最小值的下标 int minIndex = 0; for(i=0;i<arraySize-1;i++) { min = array[i]; minIndex = i; for(j=i+1;j<arraySize;j++) { if(array[j]<min) { min = array[j]; minIndex = j; } } swap(&array[i],&array[minIndex]); } } void main() { int array[8] = {8,4,3,6,5,2,1,7}; int i; chooseSort(array,8); for(i = 0; i < 8 ; i++) { printf("%d ",array[i]); } }