package cqychen.algorithms.part01.charpter01;
import java.util.ArrayList;
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();
}
}
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();
}
}