八大排序算法(六) 快速排序

这里写图片描述

#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("
");
}
// 注意不断和远端数据进行比较
void QuickSort(int n[], int low, int high){
    int i, j;
    int tmp;

    if (low >= high)  return;

    i = low;
    j = high;
    tmp = n[i];
    while (i <j ){
        /////////////////////////////////
        while (i<j && tmp <n[j]) j--;
        if (i<j) n[i++] = n[j];

        ///////////////////////////////
        while (i<j && n[i]<tmp) i++;
        if (i<j) n[j--] = n[i];
    }

    n[i] = tmp;
    QuickSort(n, low, j-1);
    QuickSort(n, i+1, high);
}

int main(){
    init(n, SIZE);
    printout(n, SIZE);
    QuickSort(n, 0, SIZE-1);
    printout(n, SIZE);
    return 0;
}

运行图:
这里写图片描述

原文地址:https://www.cnblogs.com/laohaozi/p/12538309.html