码迷,mamicode.com
首页 > 编程语言 > 详细

选择排序

时间:2015-05-10 18:50:57      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

代码:

/**************************************************
 * 选择排序
 *
 * 参考:算法导论 第3版 第一部分 第2章 2.2
 *
 * 本例中,数组的第0个位置存放的数值无意义,不参与程序运行过程
 **************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// 选择排序
void selection_sort(int [], size_t);

// 使用随机数填充数组
void fill_array_with_random(int [], size_t);

// 打印数组
void display(int [], size_t);

int main(int argc, const char * argv[]) {
    // 设定数组长度
    size_t length = 10;
    int array[length];
    
    // 使用随机数填充数组
    fill_array_with_random(array, length);
    
    // 打印排序前的数组
    printf("Before sort:\n");
    display(array, length);
    
    // 插入排序
    selection_sort(array, length);
    
    // 打印排序后的数组
    printf("After sort:\n");
    display(array, length);
    
    return 0;
}

// 选择排序
void selection_sort(int array[], size_t length) {
    for (size_t i = 1; i <= length; ++i) {
        size_t i_min = i;
        for (size_t j = i + 1; j <= length; ++j) {
            if (array[j] < array[i_min]) {
                i_min = j;
            }
        }
        
        // 交换元素
        int temp = array[i_min];
        array[i_min] = array[i];
        array[i] = temp;
    }
}

// 使用随机数填充数组
void fill_array_with_random(int A[], size_t length) {
    // 指定生成的随机数范围为[lower_limit, upper_limit)
    int lower_limit = 100;
    int upper_limit = 1000;
    
    srand((unsigned int)time(NULL));
    for (size_t i = 1; i <= length; ++i) {
        A[i] = rand() % (upper_limit - lower_limit) + lower_limit;
    }
}

// 打印数组
void display(int array[], size_t length) {
    for (size_t i = 1; i <= length; ++i) {
        printf("%d ", array[i]);
    }
    printf("\n");
}

输出:

Before sort:
379 926 992 362 457 693 885 454 232 808 
After sort:
232 362 379 454 457 693 808 885 926 992 

 

选择排序

标签:

原文地址:http://www.cnblogs.com/loftyspirit/p/4492709.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!