void bubble(char *item, int count)
{
register int a,b;
register char t;
for(a=1;a<count;++a)
for(b=count-1;b>=a;--b){
// a=1!因为 b>=a ,所以 b==a 时 b-1 应该 >=0 也就是 a -1 >= 0 ,a >=1
// b= count-1!count为个数,下标从0 ~ count-1
if(item[b-1]>item[b]){
t = item[b-1]; item[b-1]=item[b]; item[b]=t;
}
}
}
不管表最初情况如何,
bubble 排序外部循环 n-1 内部循环 n/2,得到 (n^2-n)/2
效率低下!
void shaker(char *items, int count)
{
register int a;
int exchange;
char t;
int n=1;
do{
exchange = 0;
for(a=count-n a>n-1-a)
if( item[a-1] > item[a]){
t = item[a-1]; item[a-1] = item[a]; item[a]=t;
exchange = 1;
}//将最小数往前移动
for(a=n a<count-n;++a)
if( item[a-1] > item[a]){
t = item[a-1]; item[a-1] = item[a]; item[a]=t;
exchange = 1;
}//将最大数往后移动
++n;
}while(exchange);
}