快速排序的实现两种实现
2011-01-11 11:26
316 查看
1、递归实现
#include<iostream> using namespace std; void QuickSort(int arr[], int low, int high); inline void Swap(int &a, int &b) { int temp = a; a = b; b = temp; } int main() { int arr[] = {65, 70, 75, 80, 85, 60, 55, 50, 45}; int n = sizeof(arr) / sizeof(int); cout<<"排序前为:"; for(int i=0; i<n; i++) cout<<arr[i]<<" "; cout<<endl; QuickSort(arr, 0, n-1); cout<<"排序后为:"; for(int i=0; i<n; i++) cout<<arr[i]<<" "; cout<<endl; return 0; } void QuickSort(int arr[], int low, int high) { if(low > high) return; int i = low; int j = high; int target = arr[low]; //选取低位low位置的元素作为目标元素 while(i < j) { while(j>i && arr[j]>target) j--; if(j<=i) break; while(i<j && arr[i]<=target) i++; if(i>=j) break; Swap(arr[i], arr[j]); //交换 j--; i++; } Swap(arr[low], arr[j]); //将low位的目标元素放到正确位置 QuickSort(arr, low, j-1); QuickSort(arr, j+1, high); }
相关文章推荐
- java两种方法实现快速排序
- 快速排序的两种实现方式
- java实现快速排序两种方法
- 算法导论 第七章快速排序和两种swap函数实现方式比较
- 【C/C++】快速排序的两种实现思路
- 普通快速排序的两种实现
- 算法导论 第七章快速排序中两种swap函数实现方式比较
- 算法导论 第七章快速排序中两种swap函数实现方式比较
- 快速排序的两种实现
- 快速排序的两种具体实现
- 快速排序 partition函数的两种实现小技巧~
- js实现两种实用的排序算法——冒泡、快速排序
- Java 快速排序两种实现
- 两种快速排序的实现(C语言)
- 快速排序(快排)算法的C++两种实现
- java实现多线程的两种方式继承Thread类和实现Runnable接口
- Spring定时器配置的两种实现方式OpenSymphony Quartz和java Timer详解
- java实现斐波那契数列两种写法
- dojo EnhancedGrid的两种实现方式对比
- Tapestry中的页面定时刷新的两种实现