#include<bits/stdc++.h>
using namespace std;
void ShellSort(int a[],int lenght){
for(int increment=lenght/2;increment>0;increment/=2){
for(int i=increment;i<lenght;i++){
int temp=a[i];
int j;
for(j=i-increment;j>=0&&temp<a[j];j-=increment){
a[j+increment]=a[j];
}
a[j+increment]=temp;
}
}
}
int Partition(int a[],int l,int r){
int i=l,j=r+1;
int p=a[l];
while(true){
while(a[++i]<p&&i<r);
while(a[--j]>p);
if(i<j){
swap(a[i],a[j]);
}
else break;
}
a[l]=a[j];
a[j]=p;
return j;
}
void QuickSort(int a[],int l,int r){
if(l<r){
int q=Partition(a,l,r);
QuickSort(a,l,q-1);
QuickSort(a,q+1,r);
}
}
int main(){
int i;
int a[10];
srand(time(NULL));
cout<<"----------希尔排序----------\n";
cout<<"----排序前:\n";
for(i=0;i<10;i++){
a[i]=rand()%300;
cout<<a[i]<<" ";
}
cout<<endl;
ShellSort(a,10);
cout<<"----排序后:\n";
for (i = 0; i < 10; i++)
{
cout << a[i] << " ";
}
cout<<endl;
cout << "----------快速排序----------\n";
cout << "----排序前:\n";
for (i = 0; i < 10; i++)
{
a[i] = rand() % 300;
cout << a[i] << " ";
}
cout << endl;
QuickSort(a, 0,9);
cout << "----排序后:\n";
for (i = 0; i < 10; i++)
{
cout << a[i] << " ";
}
cout << endl;
}
数据结构---c++实现希尔排序.快速排序
最新推荐文章于 2021-09-13 21:55:47 发布