插入排序、冒泡排序和选择排序详解与Java实现
来源:互联网 发布:电脑编程培训机构 编辑:程序博客网 时间:2024/06/06 05:59
一、插入排序
思想: 插入排序算法是一个对少量元素进行排序的有效算法。插入排序法的排序思想就是从数组的第二个元素开始,将数组中的每一个元素按照规则插入到已排好序的数组中以达到排序的目的.一般情况下将数组的第一个元素作为启始元素,从第二个元素开始依次插入.由于要插入到的数组是已经排好序的,所以只是要从右向左找到比插入点(下面程序中的insertNote)小(对升序而言)的第一个数组元素就插入到其后面.直到将最后一个数组元素插入到数组中,整个排序过程就算完成.
稳定性:稳定的.
时间复杂度:O(n2)
尽管插入排序的复杂度也是 O(n^2),但一般情况下,插入排序会比冒泡排序快一倍,要比选择排序还要快一点。
JAVA实现该算法如下:
- public void insertSort(int a[]){
- int length=a.length; //数组长度
- int j; //当前值的位置
- int i; //指向j前的位置
- int key; //当前要进行插入排序的值
- //从数组的第二个位置开始遍历值
- for(j=1;j<length;j++){
- key=a[j];
- i=j-1;
- //a[i]比当前值大时,a[i]后移一位,空出i的位置,好让下一次循环的值后移
- while(i>=0 && a[i]>key){
- a[i+1]=a[i]; //将a[i]值后移
- i--; //i前移
- }//跳出循环(找到要插入的中间位置或已遍历到0下标)
- a[i+1]=key; //将当前值插入
- }
- }
事例图如下:
二、冒泡排序
冒泡排序的过程很简单,就是将第一个记录的关键字和第二个记录的关键字进行比较,如果后面的比前面的小则交换,然后比较第二个和第三个,依次类推。比完一趟,最大的那个已经放到了最后的位置,这样就可以对前面N-1个数再循环比较。
- /*
- * 冒泡排序
- */
- public class BubbleSort {
- public void bubble(Integer[] data){
- for(int i=0;i<data.length;i++){
- for(int j=0;j<data.length-1-i;j++){
- if(data[j]>data[j+1]){ //如果后一个数小于前一个数交换
- int tmp=data[j];
- data[j]=data[j+1];
- data[j+1]=tmp;
- }
- }
- }
- }
- }
选择排序和冒泡排序差不多,只是冒泡排序在发现比它小的时候就交换,而选择排序是只有在确定了最小的数据之后,才会发生交换。
选择排序的基本思想:第i趟简单选择排序是指通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录进行交换。先临时记录其位置,只有在一趟
循环完以后确定了最小的数据,才会发生交换。
- protected void do_button_actionPerformed(int[] array)){
- int index;
- for(int i =1;i<array.length;i++)
- {
- index = 0;
- for(int j = 1;j<=array.length-i;j++)
- {
- if(array[j]>array[index]){
- index = j;
- }
- }
- int temp = array[array.length - i];
- array[array.length -i] = array[index];
- array[index] = temp ;
- }
- }
0 0
- 插入排序、冒泡排序和选择排序详解与Java实现
- java实现冒泡排序,选择排序,插入排序算法详解
- java选择排序、冒泡排序和插入排序实现
- java实现冒泡排序,插入排序,选择排序,快速排序
- Java基本排序实现--插入排序,选择排序,冒泡排序
- #.java实现排序算法:插入排序、选择排序、冒泡排序
- Java实现冒泡排序、快速排序、选择排序、插入排序和归并排序
- Java实现的简单排序(冒泡排序,选择排序和插入排序)
- 选择排序、插入排序、希尔排序和冒泡排序-Java实现
- 算法系列(二)冒泡排序、选择排序、插入排序和希尔排序(Java实现)
- 冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序java实现
- java实现 冒泡排序 插入排序 选择排序
- java 实现 冒泡排序、选择排序、插入排序。
- java 实现 冒泡排序、选择排序、插入排序。
- 冒泡排序、选择排序、插入排序(Java实现)
- java实现选择排序、冒泡排序、插入排序
- 冒泡排序、选择排序、直接插入排序(java实现)
- 冒泡排序,插入排序和选择排序实现
- OSD——on-screen display
- KMP模式匹配 三(串)
- 云计算之路-试用Azure:如何建立虚拟机之间的内网连接
- DFS-深度优先遍历
- shell命令中"-"的用法
- 插入排序、冒泡排序和选择排序详解与Java实现
- 时间片轮转调度算法的提及和关于fork函数执行父,子进程先后顺序的理解
- 云计算之路-试用Azure:搭建自己的内网DNS服务器
- 【算法学习笔记】05.qsort的初步应用
- struts 开发流程
- 位运算
- Sublime Text 2安装+破解+汉化+解决中文乱码
- 学习笔记之TCP/IP协议的传输方式
- Hduoj1009!【水题】