快速排序算法

来源:互联网 发布:4399赛尔号刷钻石软件 编辑:程序博客网 时间:2024/06/16 17:39

快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

待排序的数组A的值分别是:(初始关键数据:key=49) 注意关键key永远不变,永远是和key进行比较,无论在什么位置,最后的目的就是把key放在中间,小的放前面大的放后面。

A[0]
A[1]
A[2]
A[3]
A[4]
A[5]
A[6]
49
38
65
97
76
13
27

红色数字表示i和j所指数字

49   38  65  97  76  13  27

        i                                j

49   38  65  97 76  13  27

               i                         j                            swap(A[i] , A[j])

49 38   27   97   76  13   65

                     i               j                                 swap(A[i] , A[j])

49  38   27   13   76  97   65

                              i j      

 49 38   27  13   76   97   65   

                      j             i                         结束不进行交换

 49   38  27  13  76  97  65 

                        j                                             swap(49,A[j])    

13  38  27  49  76  97   65

进行第一次交换后:13 38 27 49 76 97 65

进行第二次交换后:13 38 27 49 76 97 65

进行第三次交换后:13 27 38 49 76 97 65
进行第四次交换后:13 27 38 49 65 76 97
进行第五次交换后:13 27 38 49 65 76 97

#include <iostream>#include <utility>using namespace std;int get_middle(int array[], int start, int end){int value = array[start];//中轴int i = start+1;int j = end;while( i <= j ){while( array[i] < value )i++;while( array[j] > value )j--;if( i <= j ){swap( array[i], array[j] );i++,j--;}}swap( array[start], array[j] );for( i=0; i<7; i++ )cout << array[i] << " ";cout << endl;return j;}//递归实现快速排序void _quick_sort(int array[], int start, int end){int middle;if(start >= end)return;middle = get_middle(array, start, end);_quick_sort(array, start, middle -1);_quick_sort(array, middle + 1, end);}//判断数组合法性void quick_sort(int array[], int length){int median = 0;if(NULL == array || 0 == length)return;_quick_sort(array, 0, length -1);}int main(){int array[7] = {49,38,27,13,76,97,65};quick_sort( array, 7 );for( int i=0; i<7; i++ )cout << array[i] << " ";cout << endl;return 0;}


 

 

 

原创粉丝点击