?? xuanze.txt
字號:
//通用選擇排序法xuanze.cpp
#include<iostream.h>
#include<iomanip.h>
#define N 10
typedef int(*isgreat)(void *this_num,void *next_num);
void gensort(void *base,int n,int elemsize,isgreat great)
{int i,j,k;
for(i=0;i<n-1;i++)
{k=i;char *this_num=(char *)base+k*elemsize;
char *that=this_num;
for(j=i+1;j<n;j++)
{char *next_num=(char *)base+j*elemsize;
if(great(that,next_num)>0) that=next_num;
}
if(this_num!=that)
{for(int k=0;k<elemsize;k++)
{char temp=this_num[k];
this_num[k]=that[k];
that[k]=temp;
}
}
}
}
int greatint(void *first,void *second)
{return (*(int *)first>*(int *)second);}
int greatdouble(void *first,void *second)
{return (*(double *)first>*(double *)second);}
//通用選擇排序法測試
void main()
{cout<<"xuanze.cpp運行結(jié)果:\n";
int ai[N],i,m;
for(i=0;i<N;i++)
ai[i]=random(89+i)%100;
cout<<"排序前數(shù)組:\n";
for(i=0;i<N;i++)
cout<<setw(4)<<ai[i];cout<<endl;
gensort(ai,sizeof(ai)/sizeof(int),sizeof(int),greatint);
cout<<"排序后數(shù)組:\n";
for(i=0;i<N;i++)
cout<<setw(4)<<ai[i];cout<<endl;
double bf[N];
for(i=0;i<N;i++)
bf[i]=random(289+i)/200.0;
cout<<setiosflags(ios::fixed);
cout<<"排序前數(shù)組:\n";
for(i=0;i<N;i++)
cout<<setprecision(2)<<setw(6)<<bf[i];cout<<endl;
gensort(bf,sizeof(bf)/sizeof(double),sizeof(double),greatdouble);
cout<<"排序后數(shù)組:\n";
for(i=0;i<N;i++)
cout<<setprecision(2)<<setw(6)<<bf[i];
cout<<endl;cin.get();}
xuanze.cpp運行結(jié)果:
排序前數(shù)組:
19 24 49 68 27 63 51 30 16 93
排序后數(shù)組:
16 19 24 27 30 49 51 63 68 93
排序前數(shù)組:
0.75 1.22 0.94 0.62 0.56 0.19 0.24 1.27 0.16 1.49
排序后數(shù)組:
0.16 0.19 0.24 0.56 0.62 0.75 0.94 1.22 1.27 1.49
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -