0
点赞
收藏
分享

微信扫一扫

【算法】用分治法实现按升序排序的快速排序算法(C++源码)

吴wuwu 2022-10-18 阅读 172


【算法】用分治法实现按升序排序的快速排序算法(C++源码)

  • ​​一、任务描述​​
  • ​​二、步骤描述​​
  • ​​三、程序运行结果截图​​
  • ​​四、源代码-未使用vector(C++)​​
  • ​​五、源代码-使用vector(C++)​​

一、任务描述

请采用分治法实现按升序排序的快速排序算法,设计测试用例以验证算法的准确性。
要求:使用STL库中的vector存储输入数据。

二、步骤描述

建立vector数组,输入数组的个数,编写输入vector函数put_vec和输出vector函数print_vec。建立快排,递归调用,结束后调用输出函数输出数组。

三、程序运行结果截图

【算法】用分治法实现按升序排序的快速排序算法(C++源码)_c++


【算法】用分治法实现按升序排序的快速排序算法(C++源码)_c++_02


【算法】用分治法实现按升序排序的快速排序算法(C++源码)_c++_03

四、源代码-未使用vector(C++)

#include <iostream>
#include <cmath>
#include <cstring>

using namespace std;

int a[101];

int Quicksort(int left, int right)
{
int i,j,t,temp;
if(left>right)
{
return 0;
}

temp=a[left];
i=left;
j=right;
while(i!=j)
{
while(a[j]<=temp&&i<j)
{
j--;
}
while(a[i]>=temp&&i<j)
{
i++;
}
if(i<j)
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
a[left] = a[i];
a[i] = temp;
Quicksort(left,i-1);
Quicksort(i+1,right);
return 0;
}

int main()
{
int i,n;
cout<<"Please put the numbers size:";
cin>>n;
cout<<"Please put the numbers:"<<endl;
for(i=1;i<=n;i++)
{
cin>>a[i];
}
Quicksort(1,n);
cout<<"Print the numbers:"<<endl;
for(i=1;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<a[n];
return 0;
}

五、源代码-使用vector(C++)

#include <iostream>
#include <vector>
#include <cmath>
#include <cstring>

using namespace std;

void put_vec(vector<int>&v)
{
for(size_t i=0 ; i<v.size() ; ++i)
{
cin>>v[i];
}
}

void print_vec(const vector<int>&v)
{
for(size_t i=0 ; i<v.size() ; ++i)
{
cout<<v[i]<<" ";
}
cout<<endl;
}

int Quicksort(vector<int>&v,int left, int right)
{
int i,j,t,temp;
if(left>right)
{
return 0;
}

temp=v[left];
i=left;
j=right;
while(i!=j)
{
while(v[j]>=temp&&i<j)
{
j--;
}
while(v[i]<=temp&&i<j)
{
i++;
}
if(i<j)
{
t = v[i];
v[i] = v[j];
v[j] = t;
}
}
v[left] = v[i];
v[i] = temp;
Quicksort(v,left,i-1);
Quicksort(v,i+1,right);
return 0;
}

int main()
{
vector<int>vec_a;
int vec_size;
cout<<"Please put the number size:";
cin>>vec_size;
vec_a.resize(vec_size);
int n;
n=vec_size;
cout<<"Please put the numbers:";
put_vec(vec_a);
cout<<"Print the numbers:";
print_vec(vec_a);
Quicksort(vec_a,1,n);
return 0;
}


举报

相关推荐

0 条评论