您的位置:首页 > 编程语言 > Java开发

java泛型排序之插入排序

2014-04-06 20:38 405 查看
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();



}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: