【算法】排序之冒泡排序详解
2017-06-15 11:45
246 查看
冒泡排序算法的运作如下:(从后往前)
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
代码的实现:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
代码的实现:
//对一组数字进行冒泡排序 #define _CRT_SECURE_NO_DEPRECATE #include<stdio.h> #include<stdlib.h> void BubbleSort(int *arr, int n) { int i = 0; int j = 0; int tmp = 0; printf("进行冒泡排序之后:"); for (i = 0; i <= n-1; i++) { for (j = 0; j <= n-i; j++) { if (arr[j] < arr[j+1]) { tmp = arr[j]; arr[j] = arr[j + 1]; arr[j+1] = tmp; } } } for (i = 0; i < n; i++) { printf("%d ", arr[i]); } getchar(); getchar(); } int main() { int arr[100]; int n = 0; printf("请输入数的个数:\n"); scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); } BubbleSort(arr, n); system("pause"); return 0; }运行的结果:
相关文章推荐
- 笔试面试最常涉及到的12种排序算法(包括插入排序、二分插入排序、希尔排序、选择排序、冒泡排序、鸡尾酒排序、快速排序、堆排序、归并排序、桶排序、计数排序和基数排序)进行了详解。每一种算法都有基本介绍、算
- 蛮力算法: 选择排序 冒泡排序(详解)
- PHP四种基础算法详解(冒泡排序、选择排序、插入排序、快速排序)
- 快速排序,冒泡排序,直接选择排序的算法
- 数据结构&算法实践—【排序|交换排序】冒泡排序及改进
- java基础知识之 算法 【冒泡排序】【快速排序】
- 常用的选择排序.Shell排序.快速排序.冒泡排序.插入排序的算法
- 用JAVA实现排序算法之一:冒泡排序
- 算法与数据结构——排序(二)冒泡排序(中)
- 经典算法详解 之 冒泡排序
- 经典算法详解 之 冒泡排序
- 算法和数据结构---排序---冒泡排序
- 内排序算法总结——冒泡排序
- 算法基础之排序篇-冒泡排序
- 数据结构与算法——三种基础排序算法C#实现(冒泡排序、选择排序、插入排序)
- 数据结构&算法实践—【排序|交换排序】冒泡排序及改进
- 冒泡排序、选择排序、插入排序 算法实现(C++)
- 简单排序算法--冒泡排序
- 几种常用的排序算法:插入排序、冒泡排序、选择排序的算法及C++实现
- PHP算法学习之“简单的交换排序”,“冒泡排序”以及“改进后的冒泡排序”