QuickSort

来源:互联网 发布:中美洲际高铁 知乎 编辑:程序博客网 时间:2024/06/16 03:40

QuickSort 示例

quicksort 使用了递归二分的思想,首先找到最初的基准数(以第一个为基准),如果从小到大的排列的话,先在右边找到比基准数小的数组下标,然后再在左边找到比基准数大的数组下标,两个数交换位置。 如果左边的基准数下标等于右边的基准数下标。下标表示的数和最初的基准数交换位置。 然后左边的数组和右边的数组还是按照这个方法继续排序下去。

#include<stdio.h>void quickSort(int, int);int b[10] = {4,2,5,3,2,6,7,2,9,10};int main(){   quickSort(0, 10);   for(int i = 0; i < 10; i++){       printf("%d\n", b[i]);   }}void quickSort(int begin, int end){    if(begin >= end) return;    int i = begin;    int j = end;    int temp = b[begin];    while(i != j){        while(b[j] >= b[begin] && i < j){            j--;        }           while(b[i] <= b[begin] && i < j){            i++;        }        if(i < j ){            int t = b[i];            b[i] = b[j];            b[j] = t;        }    }    b[begin] = b[i];    b[i] = temp;    quickSort(begin, i-1);    quickSort(i+1, end);}
原创粉丝点击