博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快速排序
阅读量:6683 次
发布时间:2019-06-25

本文共 1802 字,大约阅读时间需要 6 分钟。

参考:

http://www.cnblogs.com/skywang12345/p/3596746.html 

 

下面上代码:

#include
using namespace std;void quicksort(int *arr, int left, int right){ if(left < right) { int i = left; int j = right; int temp = arr[i]; while(i < j) { while(i < j && arr[j] > temp) { j--; } if(i < j) { arr[i] = arr[j];// arr[i++] = arr[j]; i++; } while(i < j && arr[i] < temp) { i++; } if(i < j) { arr[j] = arr[i]; // arr[j--] = arr[i]; j--; } } arr[i] = temp; quicksort(arr, left, i-1); quicksort(arr, i+1, right); }}int main(){ int arr[] = {
30, 20, 40, 20, 10, 40, 60, 50,90,70, 70}; int count = sizeof(arr)/sizeof(int); cout << "Before:" << endl; for(int i = 0; i < count; i++) { cout << arr[i] << " "; } cout << endl; quicksort(arr, 0, count - 1); cout << "After:" << endl; for(int i = 0; i < count; i++) { cout << arr[i] << " "; } cout << endl;}

 分析:

 以数组int arr[] = {4, 5, 2 ,6, 1, 3};进行分析:

初始化 i=0j=5 temp = arr[0];
红色加粗的表示在下一次将会被覆盖的位置。

循环次数
 
退出while条件
当前数组
对应的操作
1
i=0,j=5 <-
3 < temp
3 5 2 6 1 3
arr[0]=arr[5], i++  (arr[i++]=arr[j])
2
i=1,j =5 ->
5 > temp
5 2 6 1 5
arr[5]=arr[1],j--   (arr[j--]=arr)
3
i=1,j=4 <-
1 < temp
3 1 2 6 1 5
arr[1]=arr[4], i++  (arr[i++]=arr[j])
4
i=2,j=4 ->
 
3 1 2 6 1 5
i++ (因为2小于temp,直接i++)
5
i=3,j=4,  ->
6 > temp
3 1 2 6 6 5
arr[4]=arr[3]; j--   (arr[j--]=arr)
6
i=3,j=3
 
3 1 2 4 6 5
arr[3] = temp

第一次循环之后数组变成了这样 3 1 2 4 6 5I,j的值都是3
arr[3]左边的全部小于arr[3]arr[3]右边的全部大于arr[3]
然后对两边分别进行排序;
quicksort(arr, 0, 2);
quicksort(arr, 4, 5);

你可能感兴趣的文章
Class bytes found but defineClass()failed for error when deploying EAR
查看>>
IIS7.0安装的FTP建账号
查看>>
spring --理解
查看>>
前台中文数据后台achieveRequest().getParameter获取乱码问题
查看>>
sed工具扩展学习
查看>>
db4o 参考资料
查看>>
mysql生产环境___主从同步修复案例
查看>>
对Controller的单元测试
查看>>
人工智能无法挑战人心
查看>>
移动web 1px边框解决方案
查看>>
centos7.4 Rsync配置和触发备份
查看>>
Oracle12c 安装
查看>>
DX11之D3DXMatrixIdentity 函数
查看>>
四项重要标准 让金融机构评选合适的DDoS防护提供商
查看>>
iOS开发的插件和工具
查看>>
设置UIButton,UITextFild边框圆角(上半边或下半边)
查看>>
Python __init__.py 文件使用
查看>>
Spring源码-IOC容器(五)-Bean的初始化
查看>>
zookeeper原理
查看>>
我的友情链接
查看>>