排序-改良冒泡排序

输入格式:

输入第一行给出正整数N105),随后一行给出N个(长整型范围内的)整数,其间以空格分隔。

输出格式:

在一行中输出从小到大排序后的结果,数字间以1个空格分隔,行末不得有多余空格。

输入样例:

11
4 981 10 -17 0 -20 29 50 8 43 -5

输出样例:

-20 -17 -5 0 4 8 10 29 43 50 981
/*
    改良冒泡排序 …φ(๑˃∀˂๑)♪ 学习是我的全部
    如果整个序列有序的话时间复杂度为O(1)
*/ 
 
#include
#define MAX 100010
using namespace std;
int main()
{
    int a[MAX];
    int n;
    scanf("%d", &n);
    for(int i = 0; i < n; ++i)
        scanf("%d", &a[i]);
    for(int i = 0; i < n; ++i)
    {
        bool isExchange = false;
        for(int j = i + 1; j < n; ++j)
          if(a[j - 1] > a[j])
            {
               int temp = a[j - 1];
               a[j - 1] = a[j];
               a[j] = temp;
               isExchange = true;
            }
        if(isExchange == false)
            break;
    }
    for(int i = 0; i < n; ++i)
    {
        if(i != 0)
            printf(" ");
        printf("%d", a[i]);
    }
}

你可能感兴趣的:(数据结构-知识)