冒泡排序的基本思路是(以升序为例):每次将相邻两个数字进行比较,将小的数字放在大的前边。例如已知六个数字为9,8,5,4,2,0,第一次现将最前边的9和8进行调换,其次再将9和5进行调换......如图(只进行了两趟交换)
如此进行下去,如果有n个数,就要进行n-1趟比较;在第一趟要进行n-1次交换,在第j次就要进行n-j次交换。
void bubble_sort(int *p,int sz) //冒泡排序
{
int i = 0;
int temp = 0;
for(i=0; i<sz-1; i++)
{
int j = 0;
for(j=0; j<sz-i-1; j++)
{
if(*(p+j) > *(p+j+1))
{
temp = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = temp;
}
}
}
}
void bubble_sort(int *p,int sz) //冒泡排序--优化
{
int flag = 1;
int i = 0;
int temp = 0;
for(i=0; i<sz-1; i++)
{
int j = 0;
flag = 1;
for(j=0; j<sz-i-1; j++)
{
if(*(p+j) > *(p+j+1))
{
temp = *(p+j);
*(p+j) = *(p+j+1);
*(p+j+1) = temp;
flag = 0;
}
}
if(flag == 1)
{
return ;
}
}
}