用Java语言实现冒泡排序和插入排序
来源:互联网 发布:网页版淘宝看微淘 编辑:程序博客网 时间:2024/06/16 12:22
一.冒泡排序(英语:Bubble Sort,台湾另外一种译名为:泡沫排序)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
冒泡排序算法的运作如下:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
以上复制自维基百科。
代码如下:
/** * 冒泡排序 */ private void bubbleSort(int[] numbers){ if(numbers==null||numbers.length==0){ return; } int lenght=numbers.length; int temp; for (int i=0;i<lenght-1;i++){ for(int j=0;j<lenght-1-i;j++){ if(numbers[j]>numbers[j+1]){ temp=numbers[j]; numbers[j]=numbers[j+1]; numbers[j+1]=temp; } } } }
二、插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:
- 从第一个元素开始,该元素可以认为已经被排序
- 取出下一个元素,在已经排序的元素序列中从后向前扫描
- 如果该元素(已排序)大于新元素,将该元素移到下一位置
- 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
- 将新元素插入到该位置后
- 重复步骤2~5
以上复制自维基百科
代码如下:
/** * 插入排序 */ private void insertionSort(int[] numbers) { if(numbers==null||numbers.length<=1){ return; } int size=numbers.length; int current;//当前遍历到的值 for(int i=1;i<size;i++){//从第二个下标开始遍历 current=numbers[i]; for(int j=0;j<i;j++){//遍历当前下标之前的数据,与当前值做比较 if(current<numbers[j]){ //将当前下标开始的数据往后移动一个单位 for(int k=i;k>j;k--){ numbers[k]=numbers[k-1]; } //往后移动后会留出一个空的位置,将当前遍历到的值放入该位置 numbers[j]=current; break; } } } }
阅读全文
0 0
- 用Java语言实现冒泡排序和插入排序
- java选择排序、冒泡排序和插入排序实现
- Java实现冒泡排序、快速排序、选择排序、插入排序和归并排序
- python3实现冒泡排序和插入排序
- C语言实现冒泡和直接插入排序
- java 插入排序和冒泡排序研究
- java插入排序和冒泡排序
- java实现冒泡排序,插入排序,选择排序,快速排序
- Java基本排序实现--插入排序,选择排序,冒泡排序
- #.java实现排序算法:插入排序、选择排序、冒泡排序
- 冒泡排序和直接插入算法(java语言)
- 冒泡排序、插入排序、选择排序--C语言实现
- c语言实现选择排序、冒泡排序、插入排序
- Java实现的简单排序(冒泡排序,选择排序和插入排序)
- 选择排序、插入排序、希尔排序和冒泡排序-Java实现
- 算法系列(二)冒泡排序、选择排序、插入排序和希尔排序(Java实现)
- java实现 冒泡排序 插入排序 选择排序
- java 实现 冒泡排序、选择排序、插入排序。
- python+svmlib+opencv实现图片验证码的自动识别
- [ JDK ] 列表转数组 toArray
- 【csf-201312-3】最大的矩形
- 公平锁与非公平锁
- JSP基础(四)——JSP的基本语法
- 用Java语言实现冒泡排序和插入排序
- Maximum Flow
- c++里面指针的引用作函数参数
- 不均匀光照的二值化方法(去阴影、去曝光)
- 什么是MD5
- 操作符重载之一
- 2017上半年技术文章集合【Android】—184篇文章分类汇总
- PyCharm,python3.5的lxml中没有etree模块的问题解决方法
- 手机通过2G、3G、4G等访问Internet即公网的原理,与网线上网方式有什么区别,即手机上网和计算机上网的区别和原理是什么?