Linux c高速ソートアルゴリズム実装

1263 ワード


quick_sort.c:
#include 

#define ARRAY_N 6

int array[ARRAY_N]={2, 3 , 4, 5, 6, 1};


int show_list(int array[], int n)
{
    int i = 0;

    for (i=0; i < ARRAY_N; i++)
    {

        printf("%5d", array[i]);
    }

    printf("
"); return 0; } int quick_sort(int array[], int low, int high) { int i = 0; int j = 0; int tmp = 0; if (low < high) { i = low; j = high; tmp = array[i]; while (i < j) { while (i < j && array[j] > tmp) { j--; } if (i < j) { array[i++] = array[j]; } while (i < j && array[i] < tmp) { i++; } if (i < j) { array[j--] = array[i]; } } array[i] = tmp; quick_sort(array, low, i-1); quick_sort(array, i+1, high); } return 0; } int main(void) { show_list(array, ARRAY_N); quick_sort(array, 0, ARRAY_N - 1); show_list(array, ARRAY_N); return 0; }

 
テスト結果:
ソート前:2 3 4 5 6 1ソート後:1 2 3 4 6