复习:冒泡排序(C语言)

#include 

void bubble_sort(int arr[], int len) //函数主体
{
   int i, j, temp;
     for (i = 0; i < len - 1; i++) {
       for (j = 0; j < len - 1 - i; j++) {
           if (arr[j] > arr[j + 1]) {
              temp = arr[j];
              arr[j] = arr[j + 1];
              arr[j + 1] = temp;//经典的借助中间变量调整两个变量顺序
              }//最后效果是把大的数据往后扔
          }
     }
}

int main() 
{
    int arr[] = {22, 34, 3, 32, 82, 55, 89, 50, 37, 5, 64, 35, 9, 70};
    int len = sizeof(arr) / sizeof(arr[0]);//确定数组长度
    bubble_sort(arr, len);
    int i;
    for (i = 0; i < len; i++)
    printf("%d ", arr[i]);
    return 0;
}

要点解释:

虽然名字叫做冒泡排序,听起来像是先排较小(轻)的东西,但实际原理如下:

嵌套实现(总体方式)

外层 遍历每一个数据,如果有n个数据则最多排序(n-1)次(全反:如arr[6]={6,5,4,3,2,1})

这里注意由于数组第一个是arr[0],所以最大编号是长度-1

内层 的工作量会随着外层 i 的增加而减少,因为每一次比较相当于把最大的数运到最后

你可能感兴趣的:(算法,数据结构,排序算法)