C++ 快速排序
2014-10-02 17:05
162 查看
<span style="font-family: Arial, Helvetica, sans-serif;">void swap(int& a, int& b) {</span>
// a = a ^ b; //这个为什么不行?如果是这样:swap(a[0],a[0])的话,a和b都为a[0],两个直接都等于0 // b = a ^ b; // a = a ^ b; int temp = a; a = b; b = temp; }
一、动态判断
动画演示:http://v.youku.com/v_show/id_XMzMyODk4NTQ4.html
void QuickSort(int arr[], int left, int right) {
if(left < right) {
int i = left, j = right;
int T = arr[i];
while(i < j){
while(arr[j] >= T && i < j)
j--;
if(i < j) {
arr[i] = arr[j];
i++;
}
while(arr[i] < T && i < j)
i++;
if(i < j) {
arr[j] = arr[i];
j--;
}
}
arr[i] = T;
QuickSort(arr, left, i);
QuickSort(arr, i + 1, right);
}
}
二、通过保持i,j之间的值都大于标准值,最后交换i+1和标准值
void QuickSort(int* A, int p, int r) {
int x = A[r];
int i = p - 1;
for(int j = p; j < r; j++) {
if(A[j] <= x) {
i++;
swap(A[i], A[j]);
}
}
swap(A[i+1], A[r]);
QuickSort(A, p, i );
QuickSort(A, i + 2, r);
}
相关文章推荐
- 快速排序:Sort:QuickSort using C++
- C/C++ qsort()快速排序的用法
- C++三种排序,快速排序、选择排序、冒泡排序----简单代码
- [C++]数据结构:排序算法Part2----快速排序、归并排序、箱子排序、基数排序
- C++快速排序之sort()
- 插入排序, 合并排序, 快速排序C++源代码
- C++ 快速排序
- 快速排序c++实现
- 利用随机化快速排序求带权中位数C++实现
- C++ 快速排序QuickSort的实现
- 快速排序【c++】
- 霍尔快速排序 非递归 C++实现
- 霍尔快速排序 非递归 C++实现
- C++快速排序之sort()
- C/C++ 库函数快速排序 qsort
- 单链表的归并、快速排序 C++
- 交换排序——冒泡排序和快速排序,C++代码实现
- 快速排序 c++
- 快速排序 C++
- C++实现快速排序