java泛型排序之插入排序

package cqychen.algorithms.part01.charpter01;
import java.util.ArrayList;

import java.util.Scanner;

//此程序由cqychen编写,后续将继续跟进算法导论相应章节。

//这里写泛型类
class GenericInsertionSort<T extends Comparable<? super T>> {
    private ArrayList<T> a = new ArrayList<>();
    //编写相应的泛型方法
    void InsertionSort(){
      T temp = null;//设置中间变量
      for(Integer i=0;i<a.size();i++){
        temp=a.get(i);
        Integer j=i-1;
        while(j>=0&&temp.compareTo(a.get(j))<0){
          a.set(j+1, a.get(j));
          j--;
        }
        a.set(j+1, temp);
      }
    }
    //进行初始化操作
    void seta(ArrayList<T> a){
      System.out.println("这里我们采用的是泛型类的方法,这里进行初始化操作:");
      this.a=a;
    }
    //打印结果
    void printa(){
      System.out.println("采用泛型的最后结果如下");
      for(int i=0;i<a.size();i++){
        System.out.println(a.get(i));
      }
    }
}


public class InsertionSort {
    //这里使用的是数组
    static Integer[] InsertionSort01(Integer[] a,Integer n){
      Integer temp=0;//设置中间变量用于存放a[j]
      for(Integer i=1;i<n;i++){
        temp=a[i];
        Integer j=i-1;
        while(j>=0&&temp<a[j]){
          a[j+1]=a[j];
          j--;
        }
        a[j+1]=temp;
      }
      return a;
    }
    //这里使用的是泛型
    static ArrayList<Integer> InsertionSort02(ArrayList<Integer> a){
      Integer temp=0;
      for(Integer i=0;i<a.size();i++){
        temp=a.get(i);
        Integer j=i-1;
        while(j>=0&&temp<a.get(j)){
          a.set(j+1, a.get(j));
          j--;
        }
        a.set(j+1, temp);
      }
      return a;
    }
    //下面将会使用泛型类。
    public static void main(String[] args) {
      System.out.println("请输入要排序的东东,可以是字符,数字或者字符串哦");
      /**
       *下面的这个是使用的数组来进行排序的
       */
      Integer[] input = new Integer[10];
      Scanner inputs = new Scanner(System.in);
      for(Integer i=0;i<10;i++){
        Integer inputnum = inputs.nextInt();
        input[i]=inputnum;
      }
      InsertionSort01(input, 10);
      System.out.println("排序的结果如下:");
      for(int i=0;i<10;i++){
        System.out.println(input[i]);
      }
      /**
       * 下面这个是使用的泛型来进行排序的
       */
      System.out.println("下面采用的是泛型编程,输入10个整数:");
      ArrayList<Integer> input2 = new ArrayList<>();
      for(Integer j=0;j<10;j++){
        Integer inputnum = inputs.nextInt();
        input2.add(inputnum);
      }
      input2.trimToSize();
      InsertionSort02(input2);
      for(Integer key=0;key<input2.size();key++){
        System.out.println(input2.get(key));
      }
      /**
       * 下面使用的是泛型类
       */
      GenericInsertionSort aa = new GenericInsertionSort<>();
      aa.seta(input2);
      aa.InsertionSort();
      aa.printa();
      /**
       * 这里对字符串进行排序
       */
      System.out.println("这里对字符串进行排序");
      System.out.println("请输入10个字符串");
      ArrayList<String> input3 = new ArrayList<>();
      for(Integer j=0;j<10;j++){
        String inputnum = inputs.next();
        input3.add(inputnum);
      }
      input3.trimToSize();
      aa.seta(input3);
      aa.InsertionSort();
      aa.printa();
     
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值