编码实现冒泡排序

冒泡排序编程实现如下:

#include <stdio.h> #define LEN 10 //数组长度 void main( void ) { int ARRAY[10] = { 0, 6, 3, 2, 7, 5, 4, 9, 1, 8 }; //待排序数组 printf( “\n” ); 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++ ) { //最多做 LEN-1 趟排序 isChange = 0; //本趟排序开始前,交换标志应为假 for( j = LEN-1; j >= i; j– ) //对当前无序区 ARRAY[i..LEN]自下向上扫描 { if( ARRAY[j+1] < ARRAY[j] ) { //交换记录 ARRAY[0] = ARRAY[j+1]; //ARRAY[0]不是哨兵,仅做暂存单元 ARRAY[j+1] = ARRAY[j]; ARRAY[j] = ARRAY[0]; isChange = 1; //发生了交换,故将交换标志置为真 } } printf( “\n” ); for( a = 0; a < LEN; a++) //打印本次排序后数组内容 { printf( “%d “, ARRAY[a] ); } if( !isChange ) { break; } //本趟排序未发生交换,提前终止算法 printf( “\n” ); return; }

发表评论