统一了函数接口
#include<cstdio>
#include<algorithm>
using namespace std;
int ar[100],n=100;
void swap(int a,int b){
int t=ar[a];
ar[a]=ar[b];
ar[b]=t;
}
void bubble_sort(int s,int e){//冒泡排序
for(int i=e;i>=s;--i){
for(int j=s;j<i;++j){
if(ar[j]>ar[j+1]) swap(j,j+1);
}
}
}
void select_sort(int s,int e){//选择排序
for(int i=s;i<e;++i){
int min=ar[i],index=i;
for(int j=i+1;j<=e;++j){
if(ar[j]<min){
min=ar[j];
index=j;
}
}
swap(i,index);
}
}
void insert_sort(int s,int e){//插入排序
for(int i=s+1;i<=e;++i){
//for(int j=i-1;i>=s&&ar[j]>ar[j+1];--j) swap(j+1,j);
int j,t=ar[i];
for(j=i;j-1>=s&&ar[j-1]>t;--j) ar[j]=ar[j-1];
ar[j]=t;
}
}
void merge(int a,int b,int c,int d){//归并
int tn=b-a+d-c+2;
int tar[tn];
int one=a,two=c,cnt=0;
while(one<=b&&two<=d){
if(ar[one]<ar[two]){
tar[cnt]=ar[one];
one++;cnt++;
}
else{
tar[cnt]=ar[two];
two++;
cnt++;
}
}
while(one<=b) tar[cnt++]=ar[one++];
while(two<=d) tar[cnt++]=ar[two++];
for(int i=0;i<tn;i++) ar[a+i]=tar[i];
}
void merge_sort(int s,int e){//归并排序
/*int len;
for(len=1;len*2-1<=e;len*=2){
int j;
for(j=s;j+2*len-1<=e;j+=2*len){
merge(j,j+len-1,j+len,j+2*len-1);
}
if(j+len-1<e) merge(j,j+len-1,j+len,e);
}
merge(s,s+len-1,s+len,e);*/
if(s >= e) return ;
int mid = (s + e) >> 1;
merge_sort(s, mid);
merge_sort(mid + 1, e);
merge(s,mid,mid+1,e);
}
void quick_sort(int s,int e){//快速排序
if(s>=e) return;
int l=s,r=e;
while(l!=r){
while(l!=r&&ar[l]<ar[s]) ++l;
while(l!=r&&ar[r]>ar[s]) --r;
swap(l,r);
}
quick_sort(s,l-1);
quick_sort(l+1,e);
}
void tz(int now,int e){//调整最大堆
int t=ar[now];
int cld=now*2+1;
if(cld+1<=e&&ar[cld+1]>ar[cld]) cld++;
int par=now;
while(cld<=e&&ar[cld]>t){
ar[par]=ar[cld];
par=cld;
cld=par*2+1;
if(cld+1<=e&&ar[cld+1]>ar[cld]) cld++;
}
ar[par]=t;
}
void heap_sort(int s,int e){//堆排序
for(int i=(e-1)/2;i>=s;--i){
tz(i,e);
}
for(int i=e;i>s;--i){
swap(s,i);
tz(s,i-1);
}
}
/*void shell_sort(int s,int e){
int gep=64;
//while(gep<=tn) gep=gep<<1|1;
while(gep>=1){
for(int i=s+gep;i<=e;++i){
int temp=ar[i];
int j=i-gep;
while(j>=s&&ar[j]>temp){
ar[j+gep]=ar[j];
j-=gep;
}
ar[j+gep]=temp;
}
gep=gep/2;
}
}*/
int main(){
//找个函数随机生成
for(int i=0;i<100;++i) ar[i]=i;
random_shuffle(ar,ar+100);
for(int i=0;i<n;i++) printf("%d ",ar[i]);
printf("\n");
// bubble_sort(0,n-1);
// select_sort(0,n-1);
// insert_sort(0,n-1);
// merge_sort(0,n-1);
// quick_sort(0,n-1);
// heap_sort(0,n-1);
// shell_sort(0,n-1);
for(int i=0;i<n;i++) printf("%d ",ar[i]);
return 0;
}