常见排序算法整理(一)----冒泡排序、直接插入排序
来源:互联网 发布:简述js的事件委托 编辑:程序博客网 时间:2024/06/07 20:07
这几天趁着放假有时间,把几种常见的排序算法整理下,本次整理主要是根据http://blog.csdn.net/u012501459/article/details/44594719所写排序算法为基础,加上自己的一些理解,整理所得,下面介绍两种排序算法,冒泡排序,直接插入排序。
冒泡排序
冒泡排序,顾名思义,就是将数据按照一定顺序,像气泡一样一个一个冒上来,最后数据就会从小到大或从大到小排列,下面是java代码:
public class BubbleSort { public static void main(String[] args) { int[] data = {2,5,9,6,3,4,7,1,5}; //测试数据 myBubble(data);//冒泡排序 //打印数组 for(int i = 0;i<data.length;i++) { System.out.print(data[i]+" "); } } public static void myBubble(int[] data ) { /** * 第一个for循环只是轮次,并不控制数据交换 * 一个长度为n的数组,只需要n-1次循环即可 * 每次循环都会将最大(最小)的数移到最后, * 当只剩下最后一个数时,就不需要循环 */ for(int i = 1;i < data.length;i++) { /** * 第二个for循环用于数组中的数据数据交换 * 其中j必须小于(数组长度-1),因为后面有一个 * 取出数组j+1位置的操作 * 每次循环之后,最后面的数据顺序都是排好了的 * 所以每次循环次数只需要循环(数组长度-循环次数) * 这么多次 */ for (int j = 0;j<data.length-i;j++) { if (data[j]>data[j+1]) { int temp = data[j]; data[j]=data[j+1]; data[j+1]=temp; } } } }}
结果如下:
直接插入排序
直接插入排序:基本思想就是从一个无序数组中取出数据插入一个有序数组,每次插入时,都会遍历有序数组,在合适位置插入。在实际排序过程中可以将一个无序的数组arr[n]看成两个部分,循环轮次为i,其初值为1,arr[i-1]为有序数组,arr[i]之后为无序数组,每次循环都会将arr[i],插入到前面的有序数组,插入时会遍历前面的有序数组,在合适地方插入。下面是代码,排列顺序从小到大:
public class InsertSort { public static void main(String[] args) { int[] data = {2,5,9,6,3,4,7,1,5,8,11,44,33,9,51}; //测试数据 myInsert(data);//插入排序 //打印数组 for(int m = 0;m<data.length;m++) { System.out.print(data[m]+" "); } } public static void myInsert(int[] data) { /** * 这里i表示待插入的元素位置,一个数组data[]中 * 可以将其看成两个部分,data[i]之前的部分为有序数组 * 之后的为无序数组,data[i]就可看成无序数组中的第一个元素 * 准备插入有序数组中 */ for(int i = 1;i<data.length;i++) { /** * 该循环用于遍历前面的有序数组,该数组长度为i */ for(int j = 0;j<i;j++) { //从data[0]开始循环,判断有序数组中的值是否大于data[i] //如果是,就需要在该位置插入数据,剩下的数据将后移 if (data[j]>data[i]) { int temp = data[i];//用一个临时变量保存待插入的数据data[i] /* * 该循环用于将有序数组中的数据后移 * 其移动位置是从data[j]~~data[n-1] * 移动到data[j+1]~~data[n] * 然后在data[j]处插入data(保存data[i]的临时变量) */ for(int k = i;k>j;k--) { data[k] = data[k-1]; } data[j] = temp;//插入数据 break;//因为插入的是有序数列,插入完成后仍然为有序,就可以跳出该循环,开始下一个数据插入 } } } }}
结果如下:
阅读全文
0 0
- 常见排序算法整理(一)----冒泡排序、直接插入排序
- 常见排序算法(一)(冒泡排序、插入排序)
- 算法整理-排序(直接插入排序)
- js实现排序算法(冒泡排序,直接插入排序)
- 排序(一)—直接插入排序+冒泡排序
- 排序算法一(冒泡排序、选择排序、插入排序)
- 排序算法一(冒泡排序、选择排序、插入排序)
- 排序算法(一):直接插入排序
- 排序算法(一):直接插入排序
- 排序算法 -- (一)直接插入排序
- 排序算法(一)---- 直接插入排序
- 排序算法(一)直接插入排序
- 排序算法(一)直接插入排序
- 常见排序集合(冒泡排序,选择排序,直接插入排序,二分插入排序,快速排序,希尔排序,归并排序)
- 排序算法---基础算法(冒泡排序,快速排序,选择排序,直接插入排序,桶排序)
- 【数据结构】排序算法(一)之直接插入排序,冒泡排序
- 常见排序算法之直接插入排序
- 排序算法(1):冒泡、选择、直接插入排序
- Python基础之2
- 算法系列——Binary Tree Preorder Traversal
- 利用安卓SQLite修改QQ运动步数方法分享 简单粗暴
- Android开发神器总结
- DB2中在诊断日志db2diag.log中出现某些字符串时,自动抓取您想要的数据
- 常见排序算法整理(一)----冒泡排序、直接插入排序
- 合并有序链表,实现1+2+3...+n,要求不能使用乘除法、循环、条件判断、选择相关的关键字。
- 镜头畸变现象及其校正方法
- html总结
- 自定义Toast工具类
- DataGridView列自适应宽度
- python06字典
- hive基本操作
- spring整合应用安全框架Shiro