selection sort

来源:互联网 发布:知无涯者 拉马努金传 编辑:程序博客网 时间:2024/06/09 23:26

选择排序算法, 一种简单的排序算法

复杂度: O(n^2)

伪代码:

procedure selectSort( A : list of sortable items )    n = length(A)    for i=0 to n-1 inclusive domin = i        for j = i+1 to n inclusive doif A[j] < A[min] thenmin = jend ifend forif min != i thenswap(A[i], A[min])end if    end forend procedure  
C语言实现:
#include <stdio.h>#if 1#include "utility.h"#else#define SWAP(a,b) {(a)=(a)^(b); (b)=(a)^(b); (a)=(a)^(b);}#endifvoid select_sort(int arr[], int len){    int min;    int i,j;    for (i=0; i<len-1; i++)    {        min = i;        /*find the index of smallest element*/        for (j=i+1; j<len; j++)            if (arr[j]<arr[min])                min = j;        if (min != i)        {            /*printf("swap %d, %d\n", arr[i], arr[min]);*/            SWAP(arr[i],arr[min]);        }    }}int main(){    int arr[] = {5,1,4,2,8,9,7,3,6,17,11};    int len = ARR_SIZE(arr);        printf("list before sort :\n");    print_arr(arr, len);       select_sort(arr, len);     printf("select sort result:\n");    print_arr(arr, len);     return 0;}
运行输出:
dennis@dennis-VirtualBox:~/project/sort$ gcc -o select select_sort.c dennis@dennis-VirtualBox:~/project/sort$ ./select list before sort :5, 1, 4, 2, 8, 9, 7, 3, 6, 17, 11, select sort result:1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 17, dennis@dennis-VirtualBox:~/project/sort$ 

参考: Wikipedia Selection sort

原创粉丝点击