选择排序

/**
**  @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]);
    }

}

 

posted @ 2014-08-04 21:42  痞子胡先生  阅读(152)  评论(3编辑  收藏  举报