void selectsort(int a[],int n) // 选择排序的思路就是每次找到当前序列中最小的元素,然后交换
{ // 就是选择最小的,然后交换
int i,j,flag;
for(i = 0;i<n;i++)
{
flag = i; //当前元素
for(j = i+1;j<n;j++)
{
if(a[j]<a[flag])
flag = j; //在剩下未排序的数组中找到最小元素的下标
}
int temp = a[i]; //交换当前元素和最小元素。
a[i] = a[flag];
a[flag] = temp;
}
}
void insertsort(int a[],int n) //插入排序的思路是,每次对当前元素进行插入,插入到合适的位置,带来的代价就是每次都要多次移动元素
{
int i,j,t;
for(i = 1;i<n;i++)
{
t = a[i];
for(j = i-1; j>=0 &&t<a[j];j--)
a[j+1] = a[j]; // 比较直到找到比当前元素更小的位置,移动后面的元素
a[j+1] = t; // 插入
}
}void bubblesort(int a[],int n)
{
int i,j;
for(i = 0;i<n;i++) //冒泡排序是每一次冒泡,就比较相邻两元素的大小,并交换
{
for(j = n-1;j>i;j--)
{
if(a[j-1]>a[j])
{
int temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}
}
简单排序:插入,选择和冒泡
时间: 2024-07-30 07:06:12