算法入门学习----1.1冒泡排序
2018-01-22 00:24
211 查看
一、冒泡排序的原理
一个数组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冒泡排序
- 经典算法学习——冒泡排序
- 学习算法之冒泡排序
- 【算法导论】学习笔记第二章:算法入门
- STL中的所有算法,STL概述,STL,STL通用算法,STL入门学习
- Java再学习-算法之冒泡排序
- 机器学习入门:概念原理及常用算法
- C++ Primer 学习笔记:泛型算法入门 find && accumulate && equal
- 新手学习数据结构与算法---冒泡排序
- 【算法竞赛入门经典第二版学习】第三章习题
- 重温算法入门经典,PYTHON冒泡排序
- 算法导论学习笔记-第2章 算法入门
- 算法入门学习----1.2选择排序
- 算法模板学习专栏之并查集(一)入门
- 算法入门学习----1.2选择排序
- 【算法竞赛入门经典学习日记】第二章 循环结构程序设计
- 经典算法学习——单链表实现冒泡排序(带头结点)
- 学习心得一之算法竞赛入门