冒泡排序
#include <stdio.h>
#include <stdlib.h>
int main()
{
int L[] = {10,6,5,2,3,8,7,4,9,1};
int length = sizeof(L) / sizeof(int);
for(int i=0;i<length-1;i++)
{
for(int j=0;j<=length-i-1;j++)
{
if(L[j]>L[j+1])
{
int temp=L[j+1];
L[j+1]=L[j];
L[j]=temp;
}
}
}
for (int j = 0; j<length; j++)
printf("%d ", L[j]);
return 0;
}
冒泡排序优化,从左到右选出最大值放到右边,再从右到左选出最小值放到左边,知道左右边界相遇
#include <stdio.h>
#include <stdlib.h>
int main()
{
int L[] = {10,6,5,2,3,8,7,4,9,1};
int length = sizeof(L) / sizeof(int);
int i;
int left=0,right=length-1;
while(left<=right)
{
for(i=left;i<=right-1;i++)
{
if(L[i]>L[i+1])
{
int temp=L[i+1];
L[i+1]=L[i];
L[i]=temp;
}
}
right--;
for(i=right;i>=left+1;i--)
{
if(L[i]<L[i-1])
{
int temp=L[i-1];
L[i-1]=L[i];
L[i]=temp;
}
}
left++;
}
for (int j = 0; j<length; j++)
printf("%d ", L[j]);
return 0;
}