
void select_sort(int p[])//O(n*n)
{
int i = 0, j = 0, k = 0;
for(i=0; i<N; i++)
{
k = i;
/*j是扫描下标,找出最小的值,与无序头部的元素交换*/
for(j=i; j<N; j++)
{
if(p[k] > p[j])
{
k = j;
}
}
swap(p, i, k);
}
}

void insertion_sort(int p[], int len) //O(n*n)
{
int i = 0, j = 0;
for(i=1; i<len; i++)
{
int tmp = p[i];
/*从i-1开始比较,切勿忘记第一个元素*/
for(j=i-1; j>=0; j--)
{
if(p[j] > tmp)
{
p[j+1] = p[j];
}
else if(p[j] < tmp)
{
break;
}
}
p[j+1] = tmp;
}
}

void bubble_sort(int p[], int len) //O(n*n)
{
int i = 0, j = 0;
for(i=0; i<len-1; i++)
{
int exchange = 0;//优化,当前序列已排好序的话,就可以提前退出。
/*每次都从序列尾部开始扫描*/
for(j=len-1; j>0; j--)
{
if(p[j] < p[j-1])
{
swap(p, j, j-1);
exchange = 1;
}
}
if(exchange == 0)
{
break;
}
}
/*打印出冒泡的次数*/
printf("i : %d\n", i);
} 原文:http://blog.csdn.net/u011467781/article/details/46502025