直接插入排序及改进
来源:互联网 发布:淘宝内衣进货渠道 编辑:程序博客网 时间:2024/06/10 18:46
最近看了下排序,就把自己的学习过程记录下来
<span style="font-size:14px;">public class Sort1 {/* * 插入排序,在已经排序好的序列中,插入一个元素后,仍然排列有序 * 总体思路是查找要插入数字在数组中的位置,位置之前的数据不变,位置之后的数字下标加1 */public static void main(String[] args) {// 被插前的数组int[] m = new int[] { 1, 2, 3, 4, 5, 7, 8, 9 };// n是插入后的数组int[] n = new int[m.length + 1];// 要插入的数字int a = 6;for (int j = 0; j < m.length; j++) {if (a > m[j]) {n[j] = m[j];//当集合中的数小于a时,直接将集合中的m[j]赋值给n[j]}else{//当集合中出现m[j]大于a时,在n[j]放入a,将m[j]及其以后的数字赋值给n[j+1]n[j] = a;for (int l = j; l < m.length; l++) {n[l + 1] = m[l];}break;}}//遍历集合,查看排序情况for (int i = 0; i < n.length; i++) {System.out.print(n[i] + ",");}}}</span>运行结果如下:
1,2,3,4,5,6,7,8,9
改进排序:
<span style="font-size: 24px;"></span><span style="font-size:14px;">public class Sort2 {public static void main(String[] args) {int temp;//定义临时变量,保存要交换的值int [] a ={32,22,54,76,8,21,43,23,41,34,};//随便建立一个无序数组for (int j = 1; j < a.length; j++) {//下面这个for循环对排序没有影响,只是为了方便观察数组是如何排序,在排序前遍历下数组for (int i = 0; i < a.length; i++) {System.out.print(a[i]+",");}System.out.println();//换行temp = a[j];/* * 下面for循环开始进行比较,按照从小到大排列 * 注意i一定比j小,j是外层循环,i是内层循环,a[i]在数组前面,a[j]在数组后面 * 首先是a[i]和a[j]比较,此时i=0,j=1,如果第一个大于第二个,则将第一个值,赋值给第二个 * 那第一个值怎么办呢?别急,下面有个a[k+1]=a[k];就是填补空缺的第一个值得 * 具体运行的过程是这样的:如果a[i]>a[j]时,就将a[j-1]的值移到a[j]上,把a[j-2]的值 * 移到a[j-1]上……,以此类推,把a[i]移到a[i+1]上,剩下的循环就可以break掉,因为循环内 * 已经是有序的了 * */for (int i = 0; i < j; i++) {if (a[i]>temp) {//想实现从大到小排序,这里改为a[i]<tempfor (int k = j-1; k >=i; k--) {a[k+1]=a[k];}a[i]=temp;break;//终止第二层循环}}}//遍历下最终结果System.out.println("最终结果是:");for (int i = 0; i < a.length; i++) {System.out.print(a[i]+",");}}}</span>
运行结果:
32,22,54,76,8,21,43,23,41,34,
22,32,54,76,8,21,43,23,41,34,
22,32,54,76,8,21,43,23,41,34,
22,32,54,76,8,21,43,23,41,34,
8,22,32,54,76,21,43,23,41,34,
8,21,22,32,54,76,43,23,41,34,
8,21,22,32,43,54,76,23,41,34,
8,21,22,23,32,43,54,76,41,34,
8,21,22,23,32,41,43,54,76,34,
最终结果是:
8,21,22,23,32,34,41,43,54,76,
0 0
- 直接插入排序及改进
- 插入排序及插入排序改进
- 改进后的直接插入排序
- 深入剖析排序算法(二)------直接插入排序的研究及改进
- 直接插入排序:改进算法---折半插入排序
- 直接插入排序:改进算法---2路插入排序
- 排序算法(1) —— 直接插入排序及其改进
- 排序算法(1) —— 直接插入排序及其改进
- 2希尔排序-直接插入排序改进版
- 直接插入排序到希尔排序做的那些改进
- 改进排序算法:希尔排序(对直接插入排序的改进)
- 插入排序(直接插入排序法)原理及代码
- 直接选择排序-改进
- 算法<改进的冒泡排序、直接插入排序、折半插入排序、希尔排序、快速排序、归并排序>
- 排序算法(三)——插入排序及改进
- 排序算法(三)——插入排序及改进
- 排序算法(三)——插入排序及改进
- 插入排序--直接插入
- 经典排序算法
- android开发笔记之 国家/地区语言速查表
- ntp测试小记
- 码农的泪——二分答案总结
- Struts2 文件上传
- 直接插入排序及改进
- 用通道抠图
- SpringMVC 之<mvc:default-servlet-handler />
- 好书推荐:mysql必知必会
- Linux安装oracle
- Java中自定义注解的应用
- 百度之星第二题
- 引擎大全
- 简单的Boolean源码