冒泡排序
基本思路:
一组数据中,每次将相邻的两个数进行比较,将小的数调在前面,大的沉到底,通过依次循环,得到一个最大的。
以下代码为一组7个数字的数组进行冒泡排序的代码:
#include <stdio.h>
int main(int argc, const char * argv[]) {
int num[7] = {3,0,1,8,7,2,9};
for (int i = 0; i < 7; i++) {
printf("%d ", num[i]);
}
printf("\n");
for (int j = 6 ; j > 0; j--) {
for (int i = 0; i < j; i++){
//i指向的元素和下一个元素比较
if (num[i] > num[i+1]){
//交换位置
int temp = num[i];
num[i] = num[i+1];
num[i+1] = temp;
}
}
}
for (int i = 0; i < 7; i++) {
printf("%d ", num[i]);
}
注意:当有n个数时,要进行n-11轮比较。在第一轮中,要进行n-1次两两比较,在第j轮中,则要进行n-j次两两比较。
比如在此例中,n = 7,在第一轮比较中,要进行6次比较。