zoukankan      html  css  js  c++  java
  • 冒泡排序

    Description

    有n个无序的整数,试把它们从小到大排序。

    要求:本题采用冒泡排序法来完成。且要对基本冒泡算法进行优化,方可AC本题。

    Input

    输入共有两行,第一行是一个整数n ( 0 < n ≤ 100000 ),表示有n个整数。

    第二行是n个整数。

    Output

    输出每一趟冒泡排序的结果,一趟一行。

    Sample Input

    10
    49 14 38 74 96 65 8 49 55 27

    Sample Output

    14 38 49 74 65 8 49 55 27 96
    14 38 49 65 8 49 55 27 74 96
    14 38 49 8 49 55 27 65 74 96
    14 38 8 49 49 27 55 65 74 96
    14 8 38 49 27 49 55 65 74 96
    8 14 38 27 49 49 55 65 74 96
    8 14 27 38 49 49 55 65 74 96
    8 14 27 38 49 49 55 65 74 96

    Hint

    本题需要对冒泡法做几个优化。所以,提交之前应该上网搜索资料学习如何优化冒泡排序。

    #include<stdio.h>
    void bubbleSort(int arr[],int n){
        int nn = n;
        int last = n; //last记录最后发生交换的位置
        for(int i=0;i< n ;i++){
            int flag = 0;
            for(int j=0;j<n-1-i;j++){
                if(arr[j]>arr[j+1]){
                    last = j;
                    flag=1;
                    int tmp = arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=tmp;
                }
            }
            for(int i=0;i<n;i++){
                printf("%d",arr[i]);
                if(i==n-1)printf("
    ");
                else printf(" ");
            }
            if(flag==0||(flag==1&&last==0)){
                break;
            }
        }
    }
    int main(){
        int n;int arr[100010];
        scanf("%d",&n);
        for(int i=0;i<n;i++){
            scanf("%d",&arr[i]);
        }
        bubbleSort(arr,n);
    
    }
  • 相关阅读:
    oracle spatial 类型
    感悟
    给年轻工程师的十大忠告
    美剧
    幸福人生讲座(一):不学礼,无以立
    人成长中须知道的20个故事
    孔子
    毕业五年决定你的一生
    sysindexes表中求SELECT COUNT(*)
    我们应该懂得
  • 原文地址:https://www.cnblogs.com/dichuan/p/8243009.html
Copyright © 2011-2022 走看看