#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();
}