快速排序

简介: #include //this program is edited by 200624101101杨振平//this paper's edited time is Nov 7th,2008 //define count of array#def...

#include <stdio.h>

//this program is edited by 200624101101杨振平
//this paper's edited time is Nov 7th,2008

//define count of array
#define N 9
//main function
void main()
{
 //declare QuickSort function
 void QuickSort(int r[ ], int first, int end);
 //initial the array r[] which require to sort
 int r[N]={9,8,7,6,5,4,3,2,1};

 //call the QuickSort function
 QuickSort(r,0,N-1);
 //print the sort result array
 for(int i=0;i<N;i++)
  printf("%d/t",r[i]);
}
//implement the QuickSort function
void QuickSort(int r[ ], int first, int end)
{
 //declare Partition function
 int Partition(int r[ ], int first, int end);
 //declare variable which axis value location in the array
 int pivot;
    if (first<end) {
  //problem divide conquer,pivot to store axis value location in the array
        pivot=Partition(r, first, end); 
        //recurrence to left son array to do quick sort
        QuickSort(r, first, pivot-1);
        //recurrence to right son array to do quick sort
        QuickSort(r, pivot+1, end);
    }
}
//implement the Partition function
int Partition(int r[ ], int first, int end)
{
 //declare and init variables
    int i=first;
 int j=end;
 int temp;
 //exchange records to partition the array
    while (i<j)
    {
    //right scan
       while (i<j && r[i]<= r[j]) j--;
               if (i<j) {
     //exchange the min record to the front
                 temp=r[j];
     r[j]=r[i];
     r[i]=temp;
                 i++;
       }
    //left scan
       while (i<j && r[i]<= r[j]) i++;
       if (i<j) {
     //exchange the man record to the last
     temp=r[j];
     r[j]=r[i];
     r[i]=temp;         
                 j--;
       }
    }
 //i is the last axis value location in the array
    return i;
}

目录
相关文章
快速排序(超超详细,因为自己也不是很会)
快速排序(超超详细,因为自己也不是很会)
快速排序
快速排序。
116 35
|
6月前
|
搜索推荐 C++
C++快速排序的实现
C++快速排序的实现
|
6月前
|
算法
快速排序(三)——hoare法
快速排序(三)——hoare法
68 1
|
算法 搜索推荐 测试技术
快速排序详解
快速排序详解
100 0
|
算法 搜索推荐
快速排序到底有多快
快速排序到底有多快
86 0
|
机器学习/深度学习
785. 快速排序
785. 快速排序
67 0
【1. 快速排序】
思路: > 1. 确定分界点:q[l] , q[(1 + r)/2] , q[r] , 随机 > 2. 调整区间的范围:使得在`分界点左侧是数都<= x`, `分界点右侧的数都>= x `(`重点处理`)
89 0
【1. 快速排序】