简单选择排序
void SelectSort(int arr[],int n){
int i,j;
for(i=0;i<n;i++){
int k=i;
for(j=i+1;j<n;j++)
if(arr[j]<arr[k])
k=j;
int tmp=arr[i];
arr[i]=arr[k];
arr[k]=tmp;
}
}
直接插入排序
void InsertSort(int arr[],int n){
int i,j;
for(i=1;i<n;i++){
int tmp=arr[i];
for(j=i;j>0&&tmp<arr[j-1];j--)
arr[j]=arr[j-1];
arr[j]=tmp;
}
}
冒泡排序
void BubbleSort(int arr[],int n){
int i,j;
for(i=n-1;i>0;i--){
int flag=0;
for(j=0;j<i;j++)
if(arr[j]>arr[j+1]){
int tmp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=tmp;
flag=1;
}
if(flag==0)
return;
}
}
sort()函数应用
若给出如下结构体
struct student{
char name[10];//姓名
char id[10];//准考证号
int score;//成绩
int r;//排名
}stu[1000];
按照成绩由高到低,若成绩相等则姓名字典序小的排在前面的规则进行排序
bool cmp(student a,student b){
if(a.score!=b.score)
return a.score>b.score;
else
return strcmp(a.name,b.name)<0;
}
在排序之后,若要求按照分数相同则排名相等但占用一个排位的规则进行排名
//在结构体类型定义时将排名加到结构体中
//数组第一个个体记为第一名
stu[0].r=1;
for(int i=1;i<n;i++){
if(stu[i].score==stu[i-1].score)
stu[i].r=stu[i-1].r;
else
stu[i].r=i+1;
}