排序之冒泡排序

冒泡排序主要思想是,依次比较分别获得每趟中未排序的最大值或最小值

伪代码:
BubbleSort(int *A,int n)
flag=1;
while flag //每次遍历时,若存在逆序对,必须重新排序,直至全部有序为止
flag=0
for i from N-1 to 1
if A[i-1]>A[i] //存在逆序对,则需要将标志位标出
swap(A[i],A[i-1])
flag=1
这里算法稳定,因为>,如果改为>=,则说明相等时也要交换,则会改变该算法的稳定性
这里每次都要遍历已经排好序的部分,可以稍作处理,用变量标记未排序部分的起始下标

BubbleSort1(int *A,int n)
flag=1;
i=0;
while flag
flag=0;
for j from N-1 to i+1
if(A[j]

#include<iostream>
#include<algorithm>

using namespace std;

void Print_Bubble(int *A, int n)
{
    int i = 0;
    for (i = 0; i < n; ++i)
    { 
        if (i>0) cout << " ";
        cout << A[i];
    }  
    cout << endl;

}
int BubbleSort(int *A, int n)
{
    int flag = 1;
    int i = 0,k=0;
    int j;
    while (flag)
    {
        flag = 0;
        Print_Bubble(A, n);
        for (j = n - 1; j > i; --j)
        {
            if (A[j] < A[j - 1])
            {
                flag = 1;
            swap(A[j - 1], A[j]);
            k++;
           }

        }
    }


    return k;
}


int main(int argc, char* argv[])
{
    int N, i, j;
    int A[100];
    cin >> N;

    for (i = 0; i < N; ++i)
        cin >> A[i];

    j=BubbleSort(A, N);
    cout << "the reverse number of the Array is:" << j << endl;
    system("PAUSE");
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值