冒泡排序优化

【问题描述】

  有n个10以内的随机数, 请利用冒泡排序将他们按照从小到大的顺序排列并输出。 输入: 两行, 第一行一个整数n, 第二行n个随机正整数。( 1<=n<=100 ) 输出: 一行, 升序排列的整数序列。

【样例输入】

  6

  1 2 5 3 4 6

【样例输出】

  1 2 3 4 5 6

复制代码
#include<iostream>
using namespace std;

int main(){
    int a[101]={}; 
    int n, flag;
    cin>>n;
    for(int i=1; i<=n; i++) cin>>a[i];
    // 比较n-1趟。
    // 6 1 2 3 4 5 -> 1 2 3 4 5 6 
    for(int i=1; i<=n-1; i++){
        flag=1; // 假设序列是依次升序的(已排好序)。 
        for(int j=1; j<=n-i; j++){
            if(a[j]>a[j+1]){
                flag=0; // 交换前,序列没排好序。 
                swap(a[j], a[j+1]);
            }
        }
        if(flag) break; // 既然已排好序,跳出外层循环。 
    } 
    for(int i=1; i<=n; i++) cout<<a[i]<<" ";
    return 0;
}
复制代码

 

posted @   Hi,小董先生  阅读(53)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示