// Bubble.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
using namespace std;
template <class T>
//one bubbling pass
bool Bubble(T a[], int n, int &flag){
bool swapped = false;
for(int i = 0; i < n - 1; i++){
if(a[i] > a[i+1]){
swap(a[i],a[i+1]);
swapped = true;
flag = i + 1;
}
}
return swapped;
}
template <class T>
void BubbleSort(T a[], int n){
int flag = n;
for(int i = flag; i > 1 && Bubble(a, i, flag) ; i--);
}
template <class T>
void PrintfNum(T a[], int n);
int main(int argc, char* argv[])
{
int a[14]={9,3,7,1,4,5,8,10,11,12,13,14,15,16};
cout << "Before sort:" << endl;
int flag;
PrintfNum(a, 14);
cout << "First Bubble:" << endl;
Bubble(a, 14, flag);
PrintfNum(a, 14);
cout << "flag:" << flag << endl;
cout << "Bubble Sort:" << endl;
BubbleSort(a, 14);
PrintfNum(a, 14);
return 0;
}
template <class T>
void PrintfNum(T a[], int n){
for(int i = 0; i < n; i++){
cout << a[i] << ",";
}
cout << endl;
}