排序二:选择排序

基本思想:

  每一趟(例如第i趟,i=0,1,2,...,n-2)在后面 n-i 个待排序的数据元素中选出关键字最小的元素,作为有序元素序列的第 i 个元素。

 

#include <stdio.h>

void println(int array[], int len)
{
    int i = 0;

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

void swap(int array[], int i, int j)
{
    int temp = array[i];
    array[i] = array[j];
    array[j] = temp;
}

void SelectionSort(int array[], int len)   // O(n*n)
{
    int i = 0;
    int j = 0;
    int k = -1;

    for (i = 0; i < len; i++) {
        k = i;
        for (j = i; j < len; j++) {
                if (array[k] > array[j) {
                        k = j;
                }
        }
        swap(array, i, k);
    }
}

int int main(int argc, char const *argv[])
{
    int array[] = {21, 25, 49, 25, 16, 8};
    int len = sizeof(array) / sizeof(*array);

    SelectionSort(array, len);

    println(array, len);

    return 0;
}

 

posted @ 2016-08-28 09:12  若离相惜  阅读(196)  评论(0编辑  收藏  举报