冒泡排序算法代码是什么?

冒泡排序算法代码是:

void vBubbleSort(int arr[], int len){    int i, j, temp;    for (j = 0; j < len - 1; j++){            //每次最大元素就像气泡一样"浮"到数组的最后        for (i = 0; i < len - 1 - j; i++){    //依次比较相邻的两个元素,使较大的那个向后移            if(arr[i] > arr[i + 1]){            //交换两个数                temp = arr[i];                arr[i] = arr[i + 1];                arr[i + 1] = temp;            }        }    }}void vBubbleSortChange(int arr[], int len){    int i,j,temp;    int swapped = 1;    for (j = 0; swapped; j++){            //每次最大元素就像气泡一样"浮"到数组的最后        swapped = 0;        for (i = 0; i < len - 1 - j; i++){    //依次比较相邻的两个元素,使较大的那个向后移            if(arr[i] > arr[i + 1]){            //交换两个数                temp = arr[i];                arr[i] = arr[i + 1];                arr[i + 1] = temp;                swapped = 1;            }        }//        if(    swapped == 0) {j = len-1;}//如果没有元素交换,说明序列是顺序的,退出循环    }}void vCockTailSort(int arr[],int len){    int tmp,i,left=0,right = len-1;    while(left < right){        for(i=left;i<right;i++){//正向冒泡,确定最大值            if(arr[i]>arr[i+1]){                tmp = arr[i];                arr[i] = arr[i+1];                arr[i+1] = tmp;            }        }        right--;        for(i=right;i>left;i--){//反向冒泡,确定最小值            if(arr[i]<arr[i-1]){                tmp = arr[i];                arr[i] = arr[i-1];                arr[i-1] = tmp;            }        }        left++;    }}void vCockTailSortChange(int arr[],int len){    int tmp,i,left=0,right = len-1;    int swapped = 1;    int bound = 0;//记录某趟遍历的最后一次交换元素的位置,优化减少循环次数    while(swapped){//如果没有元素交换,说明序列是顺序的        swapped = 0;        for(i=left;i<right;i++){//正向冒泡,确定最大值            if(arr[i]>arr[i+1]){                tmp = arr[i];                arr[i] = arr[i+1];                arr[i+1] = tmp;                swapped = 1;                bound = i;            }        }        right=bound;//缩小遍历边界        for(i=right;i>left;i--){//反向冒泡,确定最小值            if(arr[i]<arr[i-1]){                tmp = arr[i];                arr[i] = arr[i-1];                arr[i-1] = tmp;                swapped = 1;                bound = i;            }        }        left=bound;//缩小遍历边界    }}

推荐教程:《C语言视频教程》

更多相关文章

  1. 在c语言中二维数组元素在内存中的存放顺序是什么?
  2. C语言中二叉树中序遍历怎么执行?
  3. 在c语言中,引用数组元素时,其数组下标的数据类型允许是什么?
  4. 在c语言中引用数组元素时,其数组下标的数据类型允许是什么
  5. golang slice检查元素是否存在
  6. golang map无法删除元素吗
  7. golang如何删除数组中的元素
  8. php操作xml入门之xml基本介绍及xml标签元素
  9. XML指南——XML元素

随机推荐

  1. 手把手教你在C语言中如何打印倒三角形
  2. strncmp函数用法详解
  3. C语言中有且唯一的函数是什么函数
  4. c语言合法标识符判断规则是什么?
  5. c语言数组在内存中是怎么分配的?
  6. c语言return返回值给谁
  7. c语言逗号运算符用法是什么?
  8. 一个完整的可运行的C源程序是由什么构成
  9. c语言中“switch case”语句怎么用?
  10. 详解C++ 多态公有继承