经典的快速排序算法
来源:互联网 发布:淘宝助理5.6.6.0 编辑:程序博客网 时间:2024/05/21 14:09
经典的快速排序算法 其中将一个数组按照枢纽元的大小将其分成左右两个部分的算法成为快速算法
这个写个避免了判断相等的情况 当遇到元素与枢纽元相等时停止 目的是为了产生两个相对平衡的左右数组
void testQuickSort(){ int arr[] = {2, 4, 3, 9, 6, 5, 7, 0, 2, 1}; //int arr[] = {0, 1, 2, 3, 4, 5, 6, 7, 8}; quickSort(arr, sizeof(arr)/sizeof(int)); for (int i = 0; i < sizeof(arr)/sizeof(int); i++) { printf("valus is %d\n", arr[i]); }}void swap(int *a, int *b){ int temp = *a; *a = *b; *b = temp;}void quickSort(int arr[], int length){ if (length <= 1) { return; } if (length == 2) { if (arr[0] > arr[1]) { swap(arr, arr + 1); } return; } int center = (length - 1) / 2; if (arr[0] > arr[center]) { swap(arr, arr + center); } if (arr[0] > arr[length - 1]) { swap(arr, arr + length - 1); } if (arr[center] > arr[length - 1]) { swap(arr + center, arr + length - 1); } swap(arr + center, arr + length - 1); int elementPivot = arr[length - 1]; int leftp = 0; int rightp = length - 1; while (1) { while (arr[--rightp] > elementPivot) { } while (arr[++leftp] < elementPivot) { } if (rightp > leftp) { swap(arr + leftp, arr + rightp); }else{ break; } } swap(arr + leftp, arr + length - 1); quickSort(arr, leftp); quickSort(arr + leftp, length - leftp);}
阅读全文
0 0
- 经典的快速排序算法
- 【经典算法】快速排序
- 经典算法:快速排序
- 经典算法--快速排序
- 经典算法--快速排序
- 【经典算法】:快速排序
- 经典算法--快速排序的随机化版本
- 【经典排序算法】快速排序
- 经典排序算法--快速排序
- [快速排序] 经典排序算法
- 经典排序算法的汇总之快速排序
- 经典算法之快速排序
- 经典算法回顾:快速排序
- 经典算法之快速排序
- 白话经典算法 快速排序
- 白话经典算法-快速排序
- 图示经典算法--快速排序
- 经典算法之快速排序
- 修改oracle字符集
- C++基础(2)2016.6.13
- Android APK反编译
- 617. Merge Two Binary Trees
- java面试须知
- 经典的快速排序算法
- Leetcode 15 3Sum
- 小知识点
- MyEclipse&Maven项目管理教程:详解Maven4MyEclipse
- manjaro 装nvidia独显驱动后,无法进入桌面环境解决办法.md
- 12岁女孩被男主播恐吓威胁 一天打赏主播7万元
- spark streaming统计kafka数据计数不准的问题
- linux 服务及进程
- 快速排序