冒泡排序编程实现如下:
#include
#define LEN 10 //数组长度
void main( void ) {
intARRAY[10]={0,6,3,2,7,5,4,9,1,8}; //待排序数组 printf( ”
” );
for( int a = 0; a < LEN; a++ ) {
printf( "%d ", ARRAY[a] ); }
int i = 0;
int j = 0;
bool isChange;
//打印数组内容
//设定交换标志
for( i = 1; i < LEN; i++ ) {
isChange = 0;
for( j = LEN-1; j >= i; j– ) {
if( ARRAY[j+1] < ARRAY[j] ) {
ARRAY[0] = ARRAY[j+1];
//最多做 LEN-1 趟排序 //本趟排序开始前,交换标志应为假 //对当前无序区 ARRAY[i..LEN]自下向上扫描
//交换记录 //ARRAY[0]不是哨兵,仅做暂存单元
} }
ARRAY[j+1] = ARRAY[j]; ARRAY[j] = ARRAY[0]; isChange = 1;
//发生了交换,故将交换标志置为真
//打印本次排序后数组内容
//本趟排序未发生交换,提前终止算法
printf( "
" );
for( a = 0; a < LEN; a++)
{
printf( "%d ", ARRAY[a] );
}
if( !isChange )
{
break;
} }
printf( "
" );
return; }
评论列表
文章目录