1.简单选择排序
基本思想:
对于n个元素,从1到n 进行枚举,进行n趟操作,每一趟都会从[i,n]中选择最小的元素与A[i]进行交换
具体代码如下:
void SelectSort()//简单选择排序
{
for(int i=1;i<=n;i++)
{
k=i;
for(int j=i;j<=n;j++)
{
if(a[j]<a[k])
k=j;
}
int temp=a[i];
a[i]=a[k];
a[k]=temp;
}
}
2.插入排序
基本思想:
对于个元素,从2到n进行枚举,对于每一趟都有a[1]~a[i-1]为已经有序,这时只要将A[i]在其中找到合适的位置插入即可
具体代码如下:
void insertSort()//插入排序
{
for(int i=2;i<=n;i++)
{
int temp=A[i],j=i;
while(j>1&&temp<A[j-1])
{
a[j]=a[j-1];
j--;
}
A[j]=temp;
}
}
3.而在具体的编程中,有时不需要指定某种排序,而是只要得到一个结果即可,这时候可以采用C++中的sort()函数来解决!
sort()函数使用必须加上头文件 #include <algorithm>和using namespace std;
sort(首元素地址,尾元素的下一个地址,cmp);cmp不是必须的
下面是按照cmp来比较的:
struct Student
{
char name[10];
char id[10];
int score;
}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;//否则将姓名字典序小的排在前面
}