Java的简单应用之插入排序和shell排序
来源:互联网 发布:ubuntu 安装iso文件 编辑:程序博客网 时间:2024/06/08 14:16
理解了插入排序,就相当于理解了一半的shell排序
今天简单的理一理插入排序和shell排序的关系,重点还是为java的用法练一练手
插入排序
这个我就不多说了,核心思想就是for循环;while循环;以及逻辑思维的应用。
核心代码
static void sort(int[]a){ int i,j,temp; for(i=1;i<a.length;i++){ j=i-1; temp=a[i]; while(j>=0&&temp<a[j]){ a[j+1]=a[j]; j-=1; } a[j+1]=temp; }}
上述代码是核心,理解了就绝对没问题了。
完整代码java版
package Sort;import java.math.*;public class insertionsort { static final int size=10; static void sort(int[]a){ int i,j,temp; for(i=1;i<a.length;i++){ j=i-1; temp=a[i]; while(j>=0&&temp<a[j]){ a[j+1]=a[j]; j-=1; } a[j+1]=temp; } } public static void main(String[] args) { // TODO 自动生成的方法存根 int a[]=new int[size]; System.out.println("before the sort:"); for(int i=0;i<size;i++){ a[i]=(int)(Math.random()*100+100); System.out.print(a[i]+" "); } sort(a); System.out.println("\nafter the sort:"); for (int i = 0; i < a.length; i++) { System.out.print(a[i]+" "); } }}
没啥难度,重点还是对整个流程的掌握。
shell排序
它其实是插入排序的升级版,记住是变步插入即可。
核心代码
static void sort(int[]a){ int r,i,j,temp; for(r=a.length/2;r>=1;r/=2){ for(i=r;i<a.length;i++){ j=i-r; temp=a[i]; while(j>=0&&temp<a[j]){ a[j+r]=a[j]; j-=r; } a[j+r]=temp; } } }
这个注意看,这里我采用的是每次减少数组总长的一半来变步,当然你也可以选择自己合适的变步,都是可以的。
完整代码java版
package Sort;import java.math.*;public class Shellsort { static final int size=10; static void sort(int[]a){ int r,i,j,temp; for(r=a.length/2;r>=1;r/=2){ for(i=r;i<a.length;i++){ j=i-r; temp=a[i]; while(j>=0&&temp<a[j]){ a[j+r]=a[j]; j-=r; } a[j+r]=temp; } } } public static void main(String[] args) { // TODO 自动生成的方法存根 int []a=new int[size]; System.out.println("before shellsort:"); for (int i = 0; i < a.length; i++) { a[i]=(int)(100*Math.random()+100); System.out.print(a[i]+" "); } System.out.println("\nafte shellsort:"); sort(a); for (int i = 0; i < a.length; i++) { System.out.print(a[i]+" "); } System.out.println(); }}
小结
总体来说,java这门语言用起来还是挺舒服的,当然有一半的功劳归结于本身的语言结构特性,毕竟是纯面对对象嘛,还有一半就是这个智能化的代码自动补全了,修改之后,简直不要不要的。
PS : java 的println和print还是有区别的,打印int型后紧接着打印string型,一定要记得及时清空掉int型后面的结束符,要不然string 就打印不出来了
阅读全文
0 0
- Java的简单应用之插入排序和shell排序
- 插入排序之直接插入排序和Shell排序
- 插入排序之之简单插入排序和希尔排序
- java简单排序学习之插入排序
- Java排序算法之简单插入排序
- [Java数据结构]简单排序之插入排序
- 排序算法之选择和插入排序的简单优化
- 【排序算法之】Shell排序和插入排序
- 插入排序之----shell排序
- 插入排序之shell排序
- Shell排序和插入排序
- 简单算法之插入排序及其优化shell排序
- 插入和shell排序
- Java实现的简单排序(冒泡排序,选择排序和插入排序)
- 简单插入排序和希尔排序简单应用
- 简单插入排序 二分插入排序 shell希尔插入排序
- 排序算法--插入排序(直接插入排序、折半插入、shell排序)的java实现
- Java简单算法之 冒泡排序 选择排序 插入排序
- 滴滴笔试编程题第一题
- JavaScript高级程序设计----读书笔记,第一、二章
- 还在疑惑并发和并行?
- 【BZOJ1419】Red is good 期望DP
- 机器人打高尔夫球
- Java的简单应用之插入排序和shell排序
- VirtualBox虚拟机中安装CentOS 7(七)安装mariadb
- [偏难] UVa OJ 1625 Color Length 动态规划
- BZOJ 2140 稳定婚姻
- c++11 chrono全面解析(最高可达纳秒级别的精度)
- niginx.conf文件的结构说明
- 9月份学习目标
- 树状数组总结~
- 3530: [Sdoi2014]数数