#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(); }
原文:https://www.cnblogs.com/xinyueliu/p/12892365.html