八大排序算法(四) 直接选择排序

这里写图片描述
代码:

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define SIZE 10
int n[SIZE];

void init(int n[], int len){
    int i;
    srand((unsigned)time(NULL));
    for (i=0; i<len; i++){
        n[i] = rand()%10+1;
    }
}

void printout(int n[], int len){
    int i;
    for (i=0; i<len; i++){
        printf("%d ", n[i]);
    }
    printf("\n");
}

void DirectSelectSort(int n[], int len){
    int i, j, k;
    int tmp;
    // 这里使用len - 1 因为在最后的时候, 最后一个数字以经是一个排好序的状态
    for (i=0; i<len-1; i++){
        k = i;
        tmp = n[i];
        for (j=i+1; j<len;j++)
            if (tmp > n[j]) k = j;
        if ( i != k){
            // 两数交换
            n[i] = n[i] ^ n[k];
            n[k] = n[i] ^ n[k];
            n[i] = n[i] ^ n[k];
        }
    }

}
int main(){
    init(n, SIZE);
    printout(n, SIZE);
    DirectSelectSort(n, SIZE);
    printout(n, SIZE);
    return 0;
}

这里写图片描述
运行图:
这里写图片描述

posted @ 2016-11-04 12:53  老耗子  阅读(76)  评论(0编辑  收藏  举报