ALGORITHM:Sort-BubbleSort

#include "stdafx.h"
#include <iostream>

static void print(int arrayOld[], int n) {
    for (int i = 0; i < n; i++) {
        if (i == n - 1) {
            std::cout << arrayOld[i] << std::endl;
        }
        else {
            std::cout << arrayOld[i] << ",";
        }
    }
}
static void swap(int array[], int i, int j) {
    array[i] ^= array[j];
    array[j] ^= array[i];
    array[i] ^= array[j];
}

static void bubbleSort(int a[], int n) {
    for (int i = 0; i < n - 1; i++) {
        for (int j = i + 1; j < n; j++) {
            if (a[i] > a[j]) {
                swap(a, i, j);
            }
        }
    }
}

static void bubbleSort2(int a[], int n) {
    bool isSorted = true;
    for (int i = 0; !isSorted && i < n - 1; i++) {
        for (int j = 0, isSorted = true; j < n - 1 - i; j++) {
            if (a[j] > a[j + 1]) {
                swap(a, j, j + 1);
                isSorted = false;
            }
        }
    }
}

static void bubble3(int a[], int n) {
    int left = 0
      , right = n - 1
      , swapPos = left // first:from left to right
    ;

    while (left < right) {
        for (int i = left; i < right; i++) {
            if (a[i] > a[i+1]) {
                swap(a, i, i + 1);
                swapPos = i;
            }
        }
        right = swapPos;

        for (int i = right; i > left; i--) {
            if (a[i - 1] > a[i]) {
                swap(a, i - 1, i);
                swapPos = i;
            }
        }
        left = swapPos;
    }
}

int _tmain(int argc, _TCHAR* argv[]) {
    int array1[10] = {18, 7,29, 2, 105, 4, 1, 61, 0, 3000};

    int n1 = sizeof(array1) / sizeof(array1[0]);
    print(array1, n1);
    bubbleSort(array1, n1);
    print(array1, n1);

    int array2[10] = {18, 7, 29, 2, 105, 4, 1, 61, 0, 3000};
    int n2 = sizeof(array2) / sizeof(array2[0]);
    bubbleSort(array2, n2);
    print(array2, n2);

    int array3[10] = { 18, 7, 29, 2, 105, 4, 1, 61, 0, 3000 };
    int n3 = sizeof(array2) / sizeof(array2[0]);
    bubbleSort(array3, n3);
    print(array3, n3);

    getchar();
}

猜你喜欢

转载自www.cnblogs.com/xinyueliu/p/12892365.html
今日推荐