/**
** @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\n",array[i]);
}
}