• Bubble Sort


    Bubble Sort

    Write a program of the Bubble Sort algorithm which sorts a sequence A in ascending order. The algorithm should be based on the following pseudocode:

    BubbleSort(A)
    1 for i = 0 to A.length-1
    2     for j = A.length-1 downto i+1
    3         if A[j] < A[j-1]
    4             swap A[j] and A[j-1]
    

    Note that, indices for array elements are based on 0-origin.

    Your program should also print the number of swap operations defined in line 4 of the pseudocode.

    Input

    The first line of the input includes an integer N, the number of elements in the sequence.

    In the second line, N elements of the sequence are given separated by spaces characters.

    Output

    The output consists of 2 lines.

    In the first line, please print the sorted sequence. Two contiguous elements of the sequence should be separated by a space character.

    In the second line, please print the number of swap operations.

    Constraints

    1 ≤ N ≤ 100

    Sample Input 1

    5
    5 3 2 4 1
    

    Sample Output 1

    1 2 3 4 5
    8
    

    Sample Input 2

    6
    5 2 4 6 1 3
    

    Sample Output 2

    1 2 3 4 5 6
    9

    #include <iostream>
    #include <algorithm>
    using namespace std;
    const int MAX = 110;
    int a[MAX];
    int sum;
    void BubbleSort(int a[], int n)
    {
    	for(int i = 0; i < n - 1; ++ i)
    	{
    		for(int j = n - 1; j >= i + 1; -- j)
    		{
    			if(a[j] < a[j - 1])
    			{
    				swap(a[j], a[j - 1]);
    				sum ++;
    			}
    		}
    	}
    } 
    //void BubbleSort(int a[], int n)
    //{
    //	int flag = 1;	// 存在顺序相反的相邻元素 
    //	for(int i = 0; flag; ++ i)
    //	{
    //		flag = 0;
    //		for(int j = n - 1; j > i; -- j)
    //		{
    //			if(a[j] < a[j - 1])
    //			{
    //				swap(a[j], a[j - 1]);
    //				flag = 1;
    //				sum ++;
    //			}
    //		}
    //	}
    //} 
    int main()
    {
    	int n;
    	cin >> n;
    	for(int i = 0; i < n; ++ i)
    	{
    		cin >> a[i];
    	}
    	
    	BubbleSort(a, n);
    	
    	for(int i = 0; i < n; ++ i)
    	{
    		if(i == n - 1)
    			cout << a[i];
    		else
    			cout << a[i] << " ";
    	}
    	cout << endl;
    	cout << sum << endl;
    	
    	return 0;
    }
    

      

  • 相关阅读:
    Neo4j学习案例【转】
    Genymotion安装总结
    软件工程实践总结
    Markdown中的缩进
    Beta Daily Scrum 第七天
    随堂软工团队小测
    PMD(Put Me Down)用例测试
    第三次作业——个人作业——软件产品案例分析
    用例图
    毕设导师智能匹配
  • 原文地址:https://www.cnblogs.com/mjn1/p/10702129.html
Copyright © 2020-2023  润新知