冒泡排序

来源:互联网 发布:白夜追凶国外知乎 编辑:程序博客网 时间:2024/06/06 10:38

//

//  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(intconst *p)

{

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

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

    {

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

    }

   return 0;

}



int output_array(intconst *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));

   return0;

}



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

输出实例:

please input the array numbers......

21

32

43

22

56

87

65

49

76

10

bubble_sort~~1~~趟排序

2132 22 43 56 6549 76 10 87

bubble_sort~~2~~趟排序

2122 32 43 56 4965 10 76 87

bubble_sort~~3~~趟排序

2122 32 43 49 5610 65 76 87

bubble_sort~~4~~趟排序

2122 32 43 49 1056 65 76 87

bubble_sort~~5~~趟排序

2122 32 43 10 4956 65 76 87

bubble_sort~~6~~趟排序

2122 32 10 43 4956 65 76 87

bubble_sort~~7~~趟排序

2122 10 32 43 4956 65 76 87

bubble_sort~~8~~趟排序

2110 22 32 43 4956 65 76 87

bubble_sort~~9~~趟排序

1021 22 32 43 4956 65 76 87

bubble_sort最后一趟排序

1021 22 32 43 4956 65 76 87


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

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

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

原创粉丝点击