冒泡排序(升序)(与前一个相同)

依然范特西╮ 提交于 2020-03-30 12:30:53

#include <stdio.h>
#include <stdlib.h>
//冒泡排序法
void BubbleSort(int arr[], int size){
 //从后往前排序,因此[0,bound)为已经排好的
 //[bound, size) 为待排序的
 //每次找最小值放到前面去,意味着已排序区间多一个元素,待排序区间少一个元素
 for (int bound = 0; bound < size; bound++){
  //下面这重循环负责找到当前排序区间的最小值并放到bound位置
  //从后往前排序,因此cur--. 否则越界
  for (int cur = size - 1; cur > bound; cur--){
   //当前一项数大于当前项时,交换
   //改变if语句条件中的'>',可降序
   if (arr[cur - 1] > arr[cur]){ 
    int tmp = arr[cur - 1];
    arr[cur - 1] = arr[cur];
    arr[cur] = tmp;
   }
  }
 }
}

int main()
{
 int arr[5] = { 5, 8, 9, 7, 6 };
 BubbleSort(arr, 5);
 for (int i = 0; i < 5; i++){ //打印数组
  printf("  %d", arr[i]);
 }
 putchar('\n');

  system("pause");
 return 0;
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!