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

    冒泡排序:从第一个数开始依此与下一个数进行比较,若后者大于前者,则二者换位,否则不进行操作;然后让第二个数与下一个进行比较;依此这样进行。一次大循环会将最大的那个数,放在后面;第二次大循环会将第二大的数放在倒数第二位;依次进行。最后便是有序的升序数列。

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn =101;
    int main()
    {
    int n,a[maxn];
    cin>>n;
    for(int i=0;i<n;i++)
    cin>>a[i];
    int i,j,k,s=0,temp;
    for(i=0,j=0;i<n-j;j++)
    {
    for(k=1;k<n-j;k++,i++) //注意这里的i++,想想为什么会有这一步
    if(a[i]>a[k]) temp=a[i],a[i]=a[k],a[k]=temp,s++;
    i=0;
    }
    for(i=0;i<n-1;i++)
    cout<<a[i]<<" ";
    cout<<a[i]<<endl; //有序数列
    cout<<s<<endl; //交换次数
    return 0;
    }

    复杂度未O(n^2),在冒泡排序中的交换次数,也就是代码中的s是原数组的逆序数(体现一个数列的错乱程度)。


    作者:孙建钊
    出处:http://www.cnblogs.com/sunjianzhao/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    AD7606笔记
    转Keil 中使用 STM32F4xx 硬件浮点单元
    旋转编码器
    PT100/PT1000
    电压跟随器
    段式液晶驱动方法
    物联网的架构
    物联网的操作系统
    C8051开发环境
    解决time命令输出信息的重定向问题
  • 原文地址:https://www.cnblogs.com/sunjianzhao/p/11330786.html
Copyright © 2011-2022 走看看