/*
*@list:待排序数组
*@n:总排序元素个数
*/
void insertSort(element list[], int n)//插入排序
{
int i=0;
int j=0;
element next;
for(i=0; i<n; i++)
{
next=list[i];
for(j=i-1;j>=0&&list[j]>next;j--)//j>=0且list[j]是和next比较
{
list[j+1]=list[j];//后一位等于前一位
}
list[j+1]=next;
}
return;
}
/*
*@list:待排序数组
*@n:总排序元素个数
*/
void selectSort(element list[], int n)//选择排序
{
int i=0;
int j=0;
int k=0;
element temp;
for(i=0; i<n; i++)
{
temp=list[i];
k=i;//不要忘记
for(j=i+1; j<n; j++)
{
if(list[j]<temp)
{
temp=list[j];
k=j;
}
}
list[k]=list[i];
list[i]=temp;
}
return;
}
/*
*@list:待排序数组
*@n:总排序元素个数
*/
void bubbleSort(element list[], int n)//冒泡排序
{
int i=0;
int j=0;
element temp;
bool exchange;//标记本趟是否有交换
for(i=0; i<n; i++)
{
exchange=false;//本趟排序开始
for(j=0; j<n-i-1; j++)//注意j的范围
{
if(list[j]>list[j+1])//j+1不能是后面排序好的元素,所以j<n-i-1
{
temp=list[j];
list[j]=list[j+1];
list[j+1]=temp;
exchange=true;//本趟排序发生交换
}
if(!exchange)//本趟排序没有发生交换,说明前n-1个不用排序,提前终止算法
{
return;
}
}
}
return;
}