冒泡排序算法实现思想个人理解

一、冒泡排序算法个人理解

  • 主要是以两个形成嵌套的for循环来完成的。外层的for循环以索引ix的值来逐个访问序列中的每个元素,ix的值由0开始增加到size(sequence) - 1,当外部的for循环迭代完成后,由ix索引取出的元素已经被放在正确的位置上了。放元素的操作是由内层的for循环来实现的,内层for循环的索引的值jx从ix+1依次递增到size(sequence) - 1为止,它比较位于ix和jx上的两个元素,如果jx上的元素较小,就将两个元素互换。具体排序过程见下图:
    冒泡排序算法实现思想个人理解

二、冒泡排序算法代码实现(C++版本)

#include "iostream"

using namespace std;

void bubleSort(int * a, int n);


int main(){
    int ix;
    int a[] = {8, 34, 3, 13, 1, 21, 5, 2};
    int a_length = (sizeof(a)) / (sizeof(a[0]));
    cout << "冒泡排序前:";
    for (int ix = 0; ix < a_length; ix++)
        cout << a[ix] << " ";
    cout << endl;

    bubleSort(a, a_length);

    cout << "冒泡排序后:";
    for (int ix = 0; ix < a_length; ix++)
        cout << a[ix] << " ";
    cout << endl;

    return 0;
}

void bubleSort(int * a, int n){   // int * a;定义一个数组指针,方便从主函数传入一个变化长度的数组
    int ix, jx, temp;
    for (int ix=0; ix < n; ix++){
        for (jx=ix+1; jx < n; jx++){
            if (a[jx] < a[ix]){
                temp = a[jx];
                a[jx] = a[ix];
                a[ix] = temp;
            }
        }
    }
}

三、结果

冒泡排序算法实现思想个人理解