書上的 code of bubble- sort, 錯誤 ㄧ堆
by 高顯忠, 2010-12-24 08:26, 人氣(3306)
#if 0
#endif
// --------------------------------------------------------
#include <time.h>
#include <stdlib.h>
#include <stdio.h>
// --------------------------------------------------------
#define Num 10
int A[10]={0};
// --------------------------------------------------------
void RandomNum() //氣泡排序法之副程式
{
int i;
srand((unsigned)time(NULL));
printf("產生10個亂數值:");
for (i = 1; i <= Num; i++)
{
A[i] = rand() % 90+10; //產生10~100的整數亂數值
printf("%4d",A[i]);
}
}
// --------------------------------------------------------
void PrintBubSort(int A[], int n) //氣泡排序法之副程式
{
int i;
printf("\n *** 排序10個亂數值: ");
for (i = 0; i <= Num; i++)
{
printf("%4d", A[i]);
}
}
// --------------------------------------------------------
void BubSort(int A[], int n) //氣泡排序法之副程式
{
int i, j , t=1, Temp;
for (i=n-1; i>0; i--)
{
printf("\n *** i= %d\n", i);
for (j =0; j <=i; j++) {
if (A[j] > A[j+1])
{ //兩數交換位置
// show data
printf("swap data of a[j]= %d, a[j+1]= %d\n", A[j], A[j+1]);
Temp = A[j];
A[j] = A[j+1];
A[j+1] = Temp;
}
}
PrintBubSort(A, n); //呼叫排序後的結果之副程式
printf("\n");
system("pause");
}
}
// --------------------------------------------------------
// check_data(A, Num);
void check_data(int a[], int n)
{
//
int i, j;
printf("\n in check_data(), n= %d\n", n);
system("pause");
// 0 - (n-1)
for (i=0;i<=(n-1);i++) {
j= i + 1;
// we hope, a[i] <= a[j]
if (a[i] > a[j]) {
printf("\n *** error in check_data(), \n");
printf("a[i]= %d, a[j]= %d\n", a[i], a[j]);
system("pause");
exit(1);
}
}
printf("\n *** check OK in check_data()\n");
system("pause");
}// end of check_data()
// --------------------------------------------------------
int main()
{ //主程式
//
// generate data
RandomNum(); //呼叫產生10個亂數值的副程式
printf("\n");
BubSort(A, Num); //呼叫氣泡排序法的副程式
// check the data
check_data(A, Num);
PrintBubSort(A, Num); //呼叫排序後的結果之副程式
printf("\n");
system("PAUSE");
return(0);
}// end of main()