算法入门学习----1.1冒泡排序
2018-01-22 00:24
288 查看
一、冒泡排序的原理
一个数组a[]有N个元素:①第一次循环(n-1)
a[0]和a[1]进行比较,如果a[0]大于a[1],两者进行交换,否则不交换。
a[1]和a[2]进行比较,如果a[1]大于a[2],两者进行交换,否则不交换。
......................
a[n-2]和a[n-1]进行比较,如果a[n-2]大于a[n-1],两者进行交换,否则不交换。
②第二次循环(n-2)
a[0]和a[1]进行比较,如果a[0]大于a[1],两者进行交换,否则不交换。
a[1]和a[2]进行比较,如果a[1]大于a[2],两者进行交换,否则不交换。
......................
a[n-3]和a[n-2]进行比较,如果a[n-3]大于a[n-2],两者进行交换,否则不交换。
③第三次循环(n-3)
............
第n-1次循环(1)
a[0]和a[1]进行比较,如果a[0]大于a[1],两者进行交换,否则不交换。
二、冒泡排序时间复杂度和空间复杂度
时间复杂度:1+2+3+......(n-1)=n*(n-1)/2 所以时间复杂度为 n^2空间复杂度:①最优的空间复杂度就是开始元素顺序已经排好了,则空间复杂度为:0;
②最差的空间复杂度就是开始元素逆序排序了,则空间复杂度为:O(n);
③平均的空间复杂度为:O(1);
三、冒泡排序代码的实现(Java)
public class Maopao { public static void main(String[] args){ int[] arr=new int[]{1,5,6,89,4,6,12,48,5,23}; maopao(arr); } public static void show(int[] arr){ //输出函数 for(int a: arr){ System.out.println(a); } } public static void maopao(int[] arr){ for(int n=arr.length-1;n > 0;n--){ //第一层,表示需要n-1次大循环 for(int m=0;m < n;m++){ //第二层,表示每次大循环需要多少次比较 if(arr[m] > arr[m+1]){ int temp =0; temp = arr[m]; arr[m] = arr[m+1]; arr[m+1] = temp; } } } show(arr); } }
相关文章推荐
- 算法入门学习----1.1冒泡排序
- 算法入门学习----1.1冒泡排序
- 算法入门学习----1.1冒泡排序
- Introduction to Algorithms 算法导论 第2章 算法入门 学习笔记及习题解答
- 入门算法之冒泡排序
- 一步步学习数据结构和算法之冒泡排序效率分析及java实现
- 算法入门学习----1.2选择排序
- 算法系统学习-1排序-冒泡排序
- 2013-5-13算法入门--冒泡排序
- Spark MLlib 入门学习笔记 - FPGrowth频繁项集算法
- 算法学习入门之使用C语言实现各大基本的排序算法
- 从入门到精通我是这样学习算法的
- 从入门到精通我是这样学习算法的
- [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序
- 算法入门---java语言实现的冒泡排序小结
- 啊哈算法学习-冒泡排序
- 【算法竞赛入门经典学习日记】第二章 循环结构程序设计
- 冒泡排序 - 零基础入门学习Delphi18
- 【阿里云大学免费精品课】机器学习入门:概念原理及常用算法
- 算法入门学习----1.2选择排序