冒泡排序C++/python 实现

对一组数据进行冒泡排序的方法是,比较相邻两个数据大小,保证较大的排在后面,然后对未排序的数据继续进行比较大小,保证最大的冒泡到最后面。

比如:3 ,7 ,9 ,10, 0这一组数据:

第一次排序:3,7,9,0,10,将最大的10交换到最后面,然后未排序的数据为3,7,9,0,对未排序的数据继续进行比较大小排序

第二次排序:3,7,0,9,将最大的9交换到最后面,然后未排序的数据为3,7,0,对未排序的数据继续进行比较大小排序

第三次排序:3,0,7,将最大的7交换到最后面,然后未排序的数据为3,0,对未排序的数据继续进行比较大小排序

第四次排序:0,3,将最大的3交换到最后面,排序完成。

可以看到,对于数据大小为n的最大需要经过n -1次排序,才可以排序完成。

数据对于C/C++来说存储在数组中,python存储在列表中,排序过程完全一样。

对一组数据的前n个数排序,代码如下:

C++方法:

# include <iostream>

using namespace std;

#define ARRAY_A_LEN 7

void bubble_sort(int a[], int n )
{
    if(n > ARRAY_A_LEN)
    {
        cout << "the array over!" <<endl;
        return;
    }
    int i ,j;
    int tmp = 0;
    for(i = 0; i < n - 1; i++)
    {
        for(j = 0; j < n  -1 -i; j++)    
        {
            tmp = a[j + 1];
            if(a[j + 1] < a[j])
            {
                a[j + 1] = a[j];
                a[j] = tmp;
            }
            
        }
    }

    return;
}

void main()
{
    int k;
    int test[ARRAY_A_LEN] = {3 ,7 ,9 ,10, 0, 5 ,6 };
    bubble_sort(test, 6);

    for(k =0; k < ARRAY_A_LEN; k++)
    {
        cout << test[k] << " ";
    }

    cout << endl;
    return;
}

python代码:

#!/usr/bin/python  
# -*- coding: utf-8 -*-  

def bubble_sort(list, n):
    if (n > len(list)):
        return
    for i in range(0, n - 1):
        for j in range(0, n - i -1):
            if list[j] > list[j + 1]:
                list[j], list[j+1] = list[j+1], list[j]
    return
    
a = [1,4,5,7,3,2,6,3,9]
bubble_sort(a,6)
print a

猜你喜欢

转载自blog.csdn.net/jishuwenming/article/details/82927680