经典排序算法 - 冒泡排序以及沉底排序

冒泡排序:

void bubblesort(int a[],int n)
{
   int i,j,temp;
   for(i=0;i<n-1;i++)
	{
		for(j=n-1;j>i;j--)
		{
			if(a[j-1]>a[j])
			{
				temp=a[j-1];
				a[j-1]=a[j];
				a[j]=temp;
			}
		}
	}//冒泡排序
}

从下往上依次冒出数组中第一小的数,第二小的数。。。。。直到整个数组有序(从小到大)。一共需要n-1次排序(说冒泡也行),每次排序需要比较的次数都减一。

同理可得沉底排序:

void bottomsort(int a[],int n)
{
   int i,j,temp;
   for(i=0;i<n-1;i++)
	{
		for(j=0;j<n-i-1;j++)
		{
			if(a[j]>a[j+1])
			{
				temp=a[j+1];
				a[j+1]=a[j];
				a[j]=temp;
			}
		}
	}//沉底排序
}

从上往下沉入第一大的数,第二大的数。。。。

还可以这样写,看个人爱好:

for(i=n-1;i>0;i--)
    {
        for(j=n-i-1;j<n-1;j++)
        {
            if(a[j]>a[j+1])
            {
                temp=a[j+1];
                a[j+1]=a[j];
                a[j]=temp;
            }
        }
    }//沉底排序

(我不是很明白这种奇怪的排版)


版权声明:本文为qq_41193767原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。