比較 精簡的 bubble- sort
(高顯忠, sjgau4311@gmail.com, 2010-12-23 19:40)
1樓
#include <cstdlib>
#include <iostream>
using namespace std;
// gen_data(a, n, max);
void gen_data(int a[], int n, int max)
{
int i;
for (i=0;i<n;i++) {
a[i]= rand()%max;
}
}// end of gen_data()
// --------------------------------------------------------
// show_data(a, n);
void show_data(int a[], int n)
{
int i;
printf("\n");
for (i=0;i<n;i++) {
printf("%3d, ", a[i]);
}
printf("\n");
system("pause");
}// end of show_data()
// --------------------------------------------------------
// swap2(a[j], a[k]);
template <class T>
void swap2(T &a, T &b)
{
T temp;
temp= a;
a= b;
b= temp;
}// end of swap2()
// --------------------------------------------------------
// bubble_sort(a, n);
void bubble_sort(int a[], int n)
{
int i, j, k;
// do the sort n- times
for (i=1;i<=n;i++) {
// for each time
printf("\n\n i= %d\n", i);
for (j=0;j<=(n-2);j++) {
k= j+1;// next item after a[j]
// we hope a[j] <= a[k]
if (a[j] > a[k]) {
printf("do the swap of a[j]= %d, a[k]= %d\n", a[j], a[k]);
swap2(a[j], a[k]);
}
// show_data(a, n);
}
show_data(a, n);
}
}// end of bubble_sort()
// --------------------------------------------------------
// check_data(a, n);
void check_data(int a[], int n)
{
int i, j;
for (i=0;i<=(n-2);i++) {
j= i + 1;
// we hope a[i] <= a[j]
if (a[i] > a[j]) {
printf("\n *** error of data check, \n");
printf("a[i]= %d, a[j]= %d\n", a[i], a[j]);
system("pause");
}
}
}// end of check_data()
// --------------------------------------------------------
// test the bubble sort
int main(int argc, char *argv[])
{
int a[1024], n, max;
n= 10;
max= 100;
// initial data
srand((unsigned) time(NULL));
// srand(123);
// generate test data
gen_data(a, n, max);
// show data
show_data(a, n);
// do the bubble sort
bubble_sort(a, n);
printf("\n end of bubble sort\n");
system("pause");
// check result
// a[5]= 999;
check_data(a, n);
printf("\n end of data check\n");
system("pause");
// show data
show_data(a, n);
system("PAUSE");
return EXIT_SUCCESS;
}// end of main()
// --------------------------------------------------------