「データ構造」の練習レベル-発泡体の並べ替え
2702 ワード
泡の並べ替え:
2、方法の拡張性?カスタム配列(データの数、タイプ)の並べ替え
3、試験用例
/*
================================================
:
: ( )、
================================================
*/
/*
====================================================
:
, ,
, ,
。 :
, 。
,
k, 。
。 O(n2)--[n ]
=====================================================
*/
void bubble_sort(int *x, int n)
{
int j, k, h, t;
for (h=n-1; h>0; h=k) /* */
{
for (j=0, k=0; j<h; j++) /* k=0, k*/
{
if (*(x+j) > *(x+j+1)) /* , */
{
t = *(x+j);
*(x+j) = *(x+j+1);
*(x+j+1) = t; /* */
k = j; /* 。 k 。*/
}
}
}
}
例:// 10 , ,
// 10
#include "stdio.h"
#define N 10
int main() {
int i, j, temp;
int a[N+1];
int count = 0;// ,
printf( " Please enter %d date:
", N );
for (i = 1; i <= N; i++)
scanf( " %d", &a[i]);
printf( "************************
");
for (i = 1; i <= N; i++) {
count++;// , 1
for ( j=1; j<=N; j++) {//
if (a[j] > a[j+1]) { temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; }
}
//
printf( "%3d:", count);
for (j = 1; j <= N; j++)
printf( "%d ",a[j]); printf( "
");
}
//
printf( " The result is :");
for (i = 1; i <= 10; i++);
printf( "%d",a[i]);
return 0;
}
改善された泡の並べ替え:// flag, , , , :
#include "stdio.h"
#define N 10
int main() {
int i,j,temp;
int a[N+1];
int count=0;
int flag;
printf( " Please enter %d date:
", N );
for( i=1; i<=N; i++)
scanf( " %d", &a[i]);
printf( "************************
");
flag=1;//
for( i=1; i<=N&&flag; i++) {
flag=0;
for( j=1; j<=N; j++) {
if(a[j]>a[j+1]) {
flag=1;//
temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; }
}
if(flag) {// ?
count++;
printf( "%3d:", count);
for( j=1; j<=N; j++)
printf( "%d ",a[j]); printf( "
");
}
}
//
printf( " The result is :");
for( i=1; i<=10; i++);
printf( "%d
",a[i]);
return 0;
}
プログラミングスタイル思考:1、入出力の人間性化.良いヒント、エラーメッセージ…2、方法の拡張性?カスタム配列(データの数、タイプ)の並べ替え
3、試験用例