快速排序的一种代码尝试

一体 2019-05-07 08:03:01
#include<iostream>

using namespace std;

void partition(int list[], int p, int v)
{
int an = 0; //change searching-sequence
int min = p; //save the edge information
int max = v; //....................
while(p != v)
{
if(an == 0)
{
for(int i = v; i > p; i--)
{
if(list[i] <= list[p])
{
int temp = list[p];
list[p] = list[i];
list[i] = temp;
an = 1;
v = p + 1;
p = i;
break;
}
}
if(an == 0) //is already partition
{
v = p;
}
}
else
{
for(int i = v; i < p; i++)
{
if(list[i] >= list[p])
{
int temp = list[p];
list[p] = list[i];
list[i] = temp;
an = 0;
v = p - 1;
p = i;
break;
}
}
if(an == 1) //......................
{
v = p;
}
}

}

if(p - min > 1) //recursive call
{
partition(list, min, p - 1);
}
if(max - p > 1) //...........
{
partition(list, p + 1, max);
}

}

int main()
{
cout << "Enter size: ";
int size;
cin >> size;
cout << "Enter list: ";
int list[size];
for(int i = 0; i < size; i++)
{
cin >> list[i];
}
partition(list, 0, size - 1);
cout << "After sorted, the list is: ";
for(int i = 0; i < size; i++)
{
cout << list[i] << " ";
}

return 0;
}
...全文
99 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
636f6c696e 2019-05-13
  • 打赏
  • 举报
回复
编码风格挺不错的,继续加油
CaptainXue 2019-05-13
  • 打赏
  • 举报
回复
排序的方式很多:冒泡排序,选择排序,插入排序,快速排序等,各有各的优势,我的博文有这方面介绍哦!!当然这些只是常规的经典写法,也可以另辟思路,值得学习
赵4老师 2019-05-13
  • 打赏
  • 举报
回复
各种排序算法动画演示http://www.webhek.com/misc/comparison-sort/

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧