C++排序算法之冒泡算法

1.冒泡算法


思想:从第一个数开始,将相邻两个数比较,将小的调到前面。

效果:第一趟比较,将最大的移到最后一个位置;第二趟,将次大的移到倒数第二个位置,以此类推,需要做N-1次循环。


 

void bubble_sort(int a[],int n)
{
    for(int i=0;ia[j+1])     //if(*(a+j)>*(a+j+1))
            {                   //{ 
                int t=a[j];     //        int *p=a+j;
                a[j]=a[j+1];    //        a+j=a+j+1;
                a[j+1]=t;       //        a+j+1=p;错误,a是指针常量,不可修改
            }                   //}
}

如果用指针的话,一定要注意数组名是指针常量,不能修改其值,只能修改指针指向的值。

void bubble_sort(int a[], int n)
{
	for (int i = 0; i *(a + j + 1))
			{
				int t = *(a + j);
				*(a + j) = *(a + j + 1);
				*(a + j + 1) = t;
			}
			
}

性能分析:固定比较次数,第i趟,需要比较n-i次,总比较次数为n(n-1)/2
最好情况:序列已经有序,不需要移动
最坏情况:每次比较需要三次移动,总移动次数3n(n-1)/2
时间复杂度,O(n2)

   


你可能感兴趣的:(C++排序算法之冒泡算法)