java基础-插入排序

简介: java基础-插入排序

正文


小伙伴们,你们好呀!我是老寇!


package sort;
public class SortTest {
  public static void main(String[] args) throws Exception{
      int[] d={52, 39, 67, 95, 70, 8, 25, 52};
    SeqList seqList=new SeqList(20);
    for (int i = 0; i < d.length; i++) {
      RecordNode r=new RecordNode(d[i]);
      seqList.insert(seqList.length(), r);
    }
    seqList.display();
/*    seqList.insertSort();
 * 
*/    
    seqList.insert(0, new  RecordNode(0));
    seqList.insertSortWithGuard();
    seqList.display(9);
  }
}


package sort;
/*
 * 顺序表的
 */
public class RecordNode {
  public Comparable key;//关键字
  public Object element;//数据元素
  public RecordNode(){//无参构造函数
  } 
  public RecordNode(Comparable key){
    this.key=key;
  }
  public RecordNode(Comparable key,Object element){
    this.key=key;
    this.element=element;
  }
/*  public String toString(){//重写toStirng()
    return "["+key+","+element+"]";
  }*/
}


package sort;
/*
 * 我的数据结构>>>插入排序
 */
public class SeqList {
  public RecordNode[] r;//结点数组
  public int curLen;//顺序表长度
  public SeqList(){}
  public SeqList(int maxSize){
    this.r=new RecordNode[maxSize];
    this.curLen=0;
  }
  public int length(){
    return curLen;
  }
  /*
   * 插入操作
   */
  public void insert(int i,RecordNode x) throws Exception{
    if(this.curLen==this.r.length){
      throw new Exception("顺序表已满");
    }
    if(i<0 || i>this.curLen){
      throw new Exception("插入位置不合理");
    }
    for(int j=this.curLen;j>i;j--){
      this.r[j]=this.r[j-1];
    }
    this.r[i]=x;
    this.curLen++;
  }
  public void display() {
    for (int i = 0; i < this.curLen; i++) {
      System.out.print(" "+r[i].key.toString());
    }
    System.out.println();
  }
  public void display(int sortMode){
    int i;
    if(sortMode==9)
      i=1;
    else
      i=0;
    for(;i<this.curLen;i++){
      System.out.print(" "+r[i].key.toString());
    }
    System.out.println();
  }
  public void insertSort(){
    RecordNode temp;
    int i,j;
    for(i=1;i<curLen;i++){
      temp=r[i];
      //t<r[j]
      for(j=i-1;j>=0&&temp.key.compareTo( r[j].key)<0;j--){
        r[j+1]=r[j];
      }
      r[j+1]=temp;
    }
  }
  public void insertSortWithGuard(){
    int i, j;
        for (i = 2; i <this.curLen; i++) {      //n-1趟扫描
            r[0] = r[i]; //将待插入的第i条记录暂存在r[0]中,同时r[0]为监视哨
            for (j = i - 1; r[0].key.compareTo(r[j].key) < 0; j--) { //将前面较大元素向后移动
                r[j + 1] = r[j];
            }
            r[j + 1] = r[0];          // r[i]插入到第j+1个位置
        //    System.out.println("第" + i + "趟: ");
        //    display();
        }
  }
}


运行的效果图:


111.png


目录
相关文章
|
3月前
|
搜索推荐 Java 索引
|
1月前
|
存储 缓存 Java
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
67 1
java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
|
5月前
|
算法 搜索推荐 Java
Java插入排序:优雅整理数据的艺术
Java插入排序:优雅整理数据的艺术
|
5月前
|
Java
【Java基础】输入输出流(IO流)
Java基础、输入输出流、IO流、流的概念、输入输出流的类层次结构图、使用 InputStream 和 OutputStream流类、使用 Reader 和 Writer 流类
170 2
|
2月前
|
安全 Java API
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
|
5月前
|
安全 Java
|
5月前
|
搜索推荐 算法 Java
【Java基础】 几种简单的算法排序
几种简单的JAVA算法排序
53 4
|
5月前
|
Java
插入排序(java)
插入排序(java)
|
5月前
|
存储 缓存 Java
Java基础17-读懂Java IO流和常见面试题(二)
Java基础17-读懂Java IO流和常见面试题(二)
41 0
|
5月前
|
存储 Java Unix
Java基础17-读懂Java IO流和常见面试题(一)
Java基础16-读懂Java IO流和常见面试题(一)
76 0
下一篇
无影云桌面