冒泡排序

//

//  main.cpp

//  Sorting

//

//  Created by yanzhengqing on 12-12-6.

//  Copyright (c) 2012 yanzhengqing. All rights reserved.


#include <iostream>

using namespace std;


int input_array(int const *p)

{

    printf("please input the array numbers......\n");

    for (uint i = 0; i < 10;i++)

    {

        scanf("%d",p++);

    }

    return 0;

}



int output_array(int const *p)

{

    for (uint i = 0; i < 10;i++)

    {

        printf("%d\t",*(p++) );

    }

    return 0;

}

/*  冒泡排序其属于快速排序范畴,快速排序是冒泡排序的改进

 若初始为正序,则只需要进行一趟排序,在排序的过程中进行n-1次元素之间的比较

 若初始为逆序,则需要进行n-1趟排序,进行n(n-1)/2 次元素之间的比较

 

 

 数据范例

  21     32     43    22     56     87     65     49      76     10

  第一趟: 21   32  22  43  56  65  49  76  10  87

  第二趟: 21。。。。。。

 */

int Bubble_sort(int *a,int n)

{

    int temp =0,l =1;

    bool flag = false //标记使用,当循环里没有变化时表示排序结束。

    for(int i =1  ;i<=n;n--)

    {

        for(int j =1 ;j<n ;j++)

       {

           if(a[j-1]>a[j])

           {

               temp = a[j-1];

               a[j-1] = a[j];

               a[j] = temp;

               flag = true;

           }

       }

        if(!flag)

        {

            cout<<"bubble_sort 最后一趟排序"<<endl;

            output_array(a);

            cout<<endl;

            break;

        }

        else

        {

           cout<<"bubble_sort ~~"<<l<<"~~趟排序"<<endl;

           output_array(a);

           cout<<endl;

           flag = false;

            l++;

        }

    }


    return 0;

}




int main(int argc, const char * argv[])

{

   int array[10] = {0};

   input_array(array);

   Bubble_sort(array,sizeof(array)/sizeof(int));

   return 0;

}



******************************************************************************************************

输出实例:

please input the array numbers......

21

32

43

22

56

87

65

49

76

10

bubble_sort ~~1~~趟排序

21 32 22 43 56 65 49 76 10 87

bubble_sort ~~2~~趟排序

21 22 32 43 56 49 65 10 76 87

bubble_sort ~~3~~趟排序

21 22 32 43 49 56 10 65 76 87

bubble_sort ~~4~~趟排序

21 22 32 43 49 10 56 65 76 87

bubble_sort ~~5~~趟排序

21 22 32 43 10 49 56 65 76 87

bubble_sort ~~6~~趟排序

21 22 32 10 43 49 56 65 76 87

bubble_sort ~~7~~趟排序

21 22 10 32 43 49 56 65 76 87

bubble_sort ~~8~~趟排序

21 10 22 32 43 49 56 65 76 87

bubble_sort ~~9~~趟排序

10 21 22 32 43 49 56 65 76 87

bubble_sort 最后一趟排序

10 21 22 32 43 49 56 65 76 87


冒泡排序比较简单,这里注意点就是加一个标志flag位防止已经成序的继续比较。

其他地方就没有什么可以深挖的了。

有高见望留言。。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值