起泡排序

来源:互联网 发布:js删除集合中的元素 编辑:程序博客网 时间:2024/04/24 09:48
 

 两种方法:小关键字往上泡,大关键字往下沉

这个是关键字小的往上冒泡

# include <stdio.h># define MAXSIZE 20typedef int KeyType;typedef struct {KeyType r[MAXSIZE+1];int length;}SqList;void CreateSqList(SqList &L){int i,n;printf("请输入待排序数据的长度:");scanf("%d",&n);printf("请输入待排序的数据:");for (i=1;i<=n;i++){scanf("%d",&L.r[i]);}L.length = n;}void Display(SqList &L){int i;for (i=1; i<=L.length; i++){printf("%d ",L.r[i]);}printf("\n");}void swap(int &i,int &j){int temp;temp = i;i = j;j = temp;}void InserSort(SqList &L){int i,j;for (i=L.length; i>1;i--){for (j=1;j<i;j++){if (L.r[j]>L.r[j+1]){swap(L.r[j],L.r[j+1]);}}printf("第%d趟排序结果: ",L.length-i+1);Display(L);}}int main(void){SqList L;CreateSqList(L);InserSort(L);printf("最后的排序结果是:");Display(L);return 0;}


下面这个是大关键字往下沉

 

# include <stdio.h># define MAXSIZE 20typedef int KeyType;typedef struct {KeyType r[MAXSIZE+1];int length;}SqList;void CreateSqList(SqList &L){int i,n;printf("请输入待排序数据的长度:");scanf("%d",&n);printf("请输入待排序的数据:");for (i=1;i<=n;i++){scanf("%d",&L.r[i]);}L.length = n;}void Display(SqList &L){int i;for (i=1; i<=L.length; i++){printf("%d ",L.r[i]);}printf("\n");}void swap(int &i,int &j){int temp;temp = i;i = j;j = temp;}void BubbleSort(SqList &L){int i=1,j;int exchange = 1;//交换标志while (i<L.length && exchange){exchange = 0;for (j=L.length-1; j>=i; j--){if(L.r[j] > L.r[j+1]){swap(L.r[j],L.r[j+1]);exchange = 1;//如果交换,则置1}}++i;printf("第%d趟排序结果: ",i-1);Display(L);}}int main(void){SqList L;CreateSqList(L);BubbleSort(L);printf("最后的排序结果是:");Display(L);return 0;}


 

原创粉丝点击