首页 技术 正文
技术 2022年11月14日
0 收藏 340 点赞 2,563 浏览 1283 个字

快速排序之C++实现

一趟快速排序的算法是:  1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;  2)以第一个数组元素作为关键数据,赋值给key,即key=A[0];  3)从j开始向前搜索,即由后开始向前搜索(j–),找到第一个小于key的值A[j],将A[j]和A[i]互换;  4)从i开始向后搜索,即由前开始向后搜索(i++),找到第一个大于key的A[i],将A[i]和A[j]互换;  5)重复第3、4步,直到i=j; (3,4步中,没找到符合条件的值,即3中A[j]不小于key,4中A[i]不大于key的时候改变j、i的值,使得j=j-1,i=i+1,直至找到为止。找到符合条件的值,进行交换的时候i, j指针位置不变。另外,i==j这一过程一定正好是i+或j-完成的时候,此时令循环结束)。

一、源代码:QuickSort.cpp

 #include<iostream>
using namespace std;
/*定义输出一维数组的函数*/
void print(int array[], int n)
{
for (int i = ; i < n; i++)
{
cout << array[i] << " ";
}
cout << endl;
} //选择基准(轴)
int partition(int array[], int low, int high)
{
while (low < high)
{
//low位置为轴点,low右边的不小于low左边的
while (low < high&&array[low] <= array[high])
{
high--;
}
int temp = array[low];
array[low] = array[high];
array[high] = temp;
//high位置为轴点,high左边的不大于high右边的
while (low < high&&array[low] <= array[high])
{
low++;
}
temp = array[low];
array[low] = array[high];
array[high] = temp;
}
return low;
} void quickSortHelp(int array[], int low, int high)
{
if (low < high)
{
//找枢轴元位置
int location = partition(array, low, high);
//递归调用
quickSortHelp(array, low, location - );
quickSortHelp(array, location + , high);
}
} void quickSort(int array[], int n)
{
//以第一个数组元素为基准(轴)
quickSortHelp(array, , n - );
} int main()
{
//定义待排序的一维数组
int array[] = { , , , , , , , , , };
//输出原始数组
cout << "原始数组是:" << endl;
print(array, );
//对数组进行排序
quickSort(array, );
//输出排序后的数组
cout << "排序后的数组是:" << endl;
print(array, );
return ;
}

二、运行效果

快速排序之C++实现

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,495
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,909
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,741
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,496
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,134
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,298