赞
踩
1.什么是冒泡排序?
冒泡排序的英文Bubble Sot,是一种最基础的交换排序。之所以叫做冒泡排序,因为每一个元素都可以像小气泡一样,根据自身大小一点一点向数组的一侧移动。
2.什么情况下可以使用冒泡排序?
冒泡排序比较简单,但是时间复杂度较大,使用于小规模的排序。
3.冒泡排序运行的原理:
比较相邻的元素,如果第一个比第二个大,就交换他们两个;对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对,在这一点,最后的元素应该会是最大的数。
3.冒泡排序的运:行流程示意图:
4.具体流程解释(可参考:http://t.csdn.cn/8aXz2)
首先,我们可以定义一个乱序的整型数组
arr[10]={8,1,5,6,7,4,3,1,2,0};
根据冒泡排序的原理,我们可以将第一个元素和与其相邻的元素进行比较,如果前一个元素比后一个元素的值大则进行值的交换。
因此,我们可以发现8是大于1的,所以对这两个数组的值进行交换。
交换前:
交换后:
同样的道理,以此类推,将交换完后的数值与下一个值进行比较,进行值的相关操作。
(中间的过程过于啰嗦重复。为了不耽误各位观众老爷,小的在此就省略了,承蒙厚爱,还望谅解)
直到将最大的值排序到数组的最后一个位置,这就是冒泡排序的一趟排序过程。
而我们可以将整个冒泡排序的过程分解为类似的多个子过程,以此实现对数组所有元素的排序。
因此对于冒泡排序的实现,我们既可以通过使用嵌套循环实现,也可以通过使用函数递归来实现冒泡排序。
5.对于冒泡排序的过程总结:
算法的实现:
冒泡排序源代码:
- #define _CRT_SECURE_NO_WARNINGS 1
- #include <stdio.h>
-
- void bubble_sort(int* arr, int n)
- {
- for (int i = 0; i < n; i++)//需要n-1
- {
- int flag = 1;
- for (int j = 0; j < n - 1 - i; j++)
- {
- int tmp = 0;
- if (arr[j] > arr[j + 1])
- {
- flag = 0;
- tmp = arr[j];
- arr[j] = arr[j + 1];
- arr[j + 1] = tmp;
- }
- }
- if (1 == flag)
- break;
- }
- }
-
- int main()
- {
- int arr[20] = { 0 };
- int n = 0;
- scanf("%d", &n);
- for (int j = 0; j < n; j++)
- {
- scanf("%d", &arr[j]);
- }
- int sz = sizeof(arr) / sizeof(arr[0]);
- bubble_sort(arr,sz);
- for (int i = 0; i < sz; i++)
- {
- printf("%d ", arr[i]);
- }
- return 0;
- }
6。总结:
本文对于冒泡排序的介绍和讲解仍有很大的纰漏,如有错误欢迎指正,承蒙厚爱,感谢每一位看到此篇文章的友友,感激不尽!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。