Algorithm--快速排序
2015-03-28 18:08
246 查看
#include "stdafx.h" #include <iostream> #include <stack> #define DATA_SIZE 14 void qSort2(int data[], int iDataSize) { if( iDataSize <= 1 ) { return ; } std::stack<int> ranges; int iLeft = 0; int iRight = iDataSize; ranges.push(iLeft); ranges.push(iRight); while( !ranges.empty() ) { int tr = ranges.top(); iRight = ranges.top(); ranges.pop(); int tl = ranges.top(); iLeft = ranges.top(); ranges.pop(); if( iRight - iLeft <= 1 ) { continue; } int pivot = data[tl]; while( tr > tl ) { while( tr > tl && data[--tr] > pivot ); data[tl] = data; while( tr > tl && data[++tl] < pivot ); data = data[tl]; } data[tl] = pivot; ranges.push(iLeft); ranges.push(tl); ranges.push(tl + 1); ranges.push(iRight); } } //=============================================================================== void swap(int data[], int i, int j) { int iTemp = data[i]; data[i] = data[j]; data[j] = iTemp; } int partition(int data[], int iLow, int iHigh) { int iPoint = data[iLow]; while ( iLow < iHigh ) { while ( iLow < iHigh && data[iHigh] >= iPoint ) { iHigh--; } swap(data, iLow, iHigh); while ( iLow < iHigh && data[iLow] <= iPoint ) { iLow++; } swap(data, iLow, iHigh); } return iLow; } void qSort1(int data[], int iLow, int iHigh) { int iPoint = 0; if ( iLow < iHigh ) { iPoint = partition(data, iLow, iHigh); qSort1(data, iLow, iPoint - 1); qSort1(data, iPoint + 1, iHigh); } } void printResult(int data[], int iDataSize) { printf("排序后的结果是:"); for ( int i = 0; i < iDataSize; i++) { printf("%d ", data[i]); } printf("\n\n"); } //快速排序--递归实现 void quickSort_recursive() { int data[DATA_SIZE] = {3,6,1,4,2,5,9,33,8,1,22,32,11,18}; qSort1(data, 0, DATA_SIZE - 1); printResult(data, DATA_SIZE); } //快速排序--迭代实现 void quickSort_Iterative() { int data[DATA_SIZE] = {3,6,1,4,2,5,9,33,8,1,22,32,11,18}; qSort2(data, DATA_SIZE); printResult(data, DATA_SIZE); } int _tmain(int argc, _TCHAR* argv[]) { quickSort_Iterative(); getchar(); return 0; }
相关文章推荐
- C++实现快速排序(源代码) 标签: c++算法systemc 2011-11-09 22:01 75011人阅读 评论(11) 收藏 举报 分类: Algorithm(1) C/C++(13
- 一个快速排序的实现 An Algorithm for QuickSort
- 为什么自己写的快速排序要比algorithm命名空间下的sort要慢?
- [Algorithm_Learn_04]分治法之快速排序
- Algorithm: quick sort implemented in python 算法导论 快速排序
- 【Algorithm】快速排序(续)
- Algorithm--让人困惑的快速排序(划分算法)
- Algorithm——Quicksort(快速排序)
- 【Algorithm】快速排序
- Algorithm--让人困惑的快速排序(划分算法) 续
- java 快速排序
- 排序---快速排序
- Algorithm(三):快速排序
- hiho一下 第108周_Memory Allocating Algorithm(双向链表)
- The El Gamal Algorithm
- 常用排序算法(四)——快速排序
- optimal_binary_search_tree introduction to algorithm 3rd, example 15.5
- 八大排序算法Java、Python、C++实现 -- 快速排序
- 排序算法解析——冒泡排序、选择排序、快速排序
- 快速排序