常用算法-冒泡排序代码实现
来源:互联网 发布:cs编程语言 编辑:程序博客网 时间:2024/05/29 17:40
冒泡排序的基本原理就是:两两比较,较小的放到前面,较大的放到后面.
/* 冒泡法 */#include <stdio.h>//函数声明void sortArray(int array[],int length);int main(int argc, const char * argv[]) { // insert code here... //定义数组 int array[] = {16,98,56,34,66,77}; //调用排序函数 sortArray(array, sizeof(array) / sizeof(int)); //打印排序后的数组 for (int i =0 ; i < sizeof(array) / sizeof(int); i++) { printf("%d ",array[i]); } printf("\n"); return 0;}//冒泡法(起泡法)实现void sortArray(int array[],int length){ //for循环 for (int i = 0; i < length - 1; i++) { for ( int j = 0; j < length - i -1; j++) { if (array[j] < array[j+1] ) { array[j] = array[j] + array[j+1]; array[j+1] = array[j] - array[j+1]; array[j] = array[j] - array[j+1]; } } }}
从上面的代码可以看出,外层循环 i,控制的是比较的趟数,内存循环 j 控制的是每趟比较的次数.
第一趟比较完,最大的数放到了最后,
第二趟比较的时候,找出次大的数,放在最大数前面一位,但是不会再讲最后的最大数纳入比较范围.
.
.
.
直到全部完成排序
当然冒泡排序还有其他写法:如
#include <stdio.h> void swap(int *a, int *b); int main() { int array[10] = {15, 225, 34, 42, 52, 6, 7856, 865, 954, 10}; int i, j; for (i = 0; i < 10; i++) { //每一次由底至上地上升 for (j = 9; j > i; j--) { if (array[j] < array[j-1]) { swap(&array[j], &array[j-1]); } } } for (i = 0; i < 10; i++) { printf("%d\n", array[i]); } return 0; } void swap(int *a, int *b) { int temp; temp = *a; *a = *b; *b = temp; }
这种写法,是第一次将最小的数放到最前面,第二次找出剩余数中最小的数,放到第二位 … 直到全部排序完毕
0 0
- 常用算法-冒泡排序代码实现
- 常用代码段(二)冒泡排序算法Java实现
- 常用算法---冒泡排序
- 冒泡排序算法代码
- 常用排序算法--冒泡排序
- 常用排序算法--冒泡排序
- 常用排序算法-冒泡排序
- 常用排序算法-冒泡排序
- 常用排序算法之冒泡排序c及lua实现
- 【数据结构与算法】【排序】冒泡排序的代码实现
- 冒泡排序代码实现
- 冒泡排序代码实现
- 实现冒泡排序算法
- 冒泡排序算法实现
- 算法实现-->冒泡排序
- 冒泡排序算法实现
- 【常用排序算法】冒泡排序与冒泡排序优化改进(Java实现)
- 算法代码实现之冒泡排序,Golang(Go语言)实现
- WebService学习总结九 使用Spring发布WebService
- CANoe 入门 Step by step系列(一)
- NZT 9系统详细安装办法
- CANoe 入门 Step by step系列(二)CAPL编程
- Wooden Sticks
- 常用算法-冒泡排序代码实现
- 15级第二周会议
- OCA笔记03------用户、角色和权限
- NZT 全息备份 详解
- MySQL 自动备份脚本
- SQLite
- Apache Mina----基础入门
- stm32--第一个串口通信程序
- 【题】【树(最大生成树&LCA)】NKOJ 2495 货车运输 【NOIP2013-D1T3】