向上起泡排序
1.总共要比较n-1次,每次比较j=n-i次,j从尾元素起,左半区为有序子集,起始为空,右半区为无序子集,函数头BubbleUp(int p,int n)
2.冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的逆序就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到数列的顶端。
代码实现:
#include<stdio.h>
void BubbleUp(int *p,int n);
void BubbleUp(int *p,int n)
{
int temp;
int i,j;
for(i=0;i<n;i++)
{
for(j=n;j>n-i;j--)
{
if(p[j-1]<p[j-2])
{
temp=p[j-1];
p[j-1]=p[j-2];
p[j-2]=temp;
}
}
}
for(i=0;i<n;i++)
{
printf("%d ",p[i]);
}
}
int main()
{
int a[]={2,4,1,6,23,12,3,21,45,13};
int n;
n=sizeof(a)/sizeof(a[0]);
BubbleUp(a,n);
return 0;
}
结果: