冒泡排序

一、问题描述

  对N个整数(数据由键盘输入)进行升序排序。

二、解题思路

  由键盘输入的n个数可以储存到长度为n的数组里,然后对其进行操作。

  冒泡排序的思路:冒泡排序的思想:首先,从表头开始往后扫描数组,在扫描过程中逐对比较相邻两个元素的大小。若相邻两个元素中,前面的元素大于后面的元素,则将它们互换,称之为消去了一个逆序。在扫描过程中,不断地将两相邻元素中的大者往后移动,最后就将数组中的最大者换到了表的最后,这正是数组中最大元素应有的位置。然后,在剩下的数组元素中(n-1个元素)重复上面的过程,将次小元素放到倒数第2个位置。不断重复上述过程,直到剩下的数组元素为0为止,此时的数组就变为了有序。假设数组元素的个数为n,在最坏情况下需要的比较总次数为: ((n-1)+(n- -2)+...+2+1)= n(n- 1)/2。

三、代码实现

#include<iostream>
#include<cmath>
using namespace std;
const int N = 1000010;
int a[N];
int main()
{
    int n = 10;
    for (int i = 0; i < n; i++)
    {
        cin >> a[i];
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = i; j < n; j++)
        {
            if (a[j] < a[i])
            {
                int t = a[j];
                a[j] = a[i];
                a[i] = t;
            }
        }
    }
    for (int i = 0; i < n; i++)
    {
        cout << a[i] << " ";
    }
    cout << endl;
    return 0;
}
View Code
运行结果

 

 

posted @ 2023-04-28 12:59  海绵宝宝222  阅读(31)  评论(0)    收藏  举报