C语言实现冒泡排序算法:
表一
表二
注:表一是冒泡排序的过程;表二是对冒泡法的优化
#include<stdio.h> #include<stdlib.h> void swap(int* number, int i, int j); int main() { int number[100]; int quantity; int m = 0; int n = 0; int i = 0, j = 0; int flag = 1;//flag用来作为标记 printf("Please Enter how many you want to input numbers:\n"); scanf("%d", &quantity); printf("Please Input %d number:\n", quantity); for(m = 1; m <= quantity; m++) { scanf("%d", &n); number[m] = n; } for(i = 1; i < quantity && flag == 1; i++)//当flag标记为1时继续循环,否则退出循环 { flag = 0;//flag初始化为0 for(j = quantity - 1; j >= i; j--) { if(number[j] > number[j+1]) { swap(number, j, j+1); flag = 1;//程序如果执行到此步,说明数据有交换,flag标记为1 } } } printf("\n数据从小到大的顺序如下:\n"); for(m = 1; m <= quantity; m++) { printf("%d ", number[m]); } printf("\n"); return 0; } void swap(int* number, int i, int j) { int temp; temp = number[i]; number[i] = number[j]; number[j] = temp; }