我的“插入算法”实现

我的“插入算法”实现

这是我的“插入算法”Java实现!

View Code

* 目的:练习 “插入排序”算法 3 * 功能:对一个随机生成的数组进行非降排序 4 * 时间:2013.03.08 5 * 作者:iGeneral part01.chapter02;java.util.*; 10 import java.text.SimpleDateFormat; _1exercise { main(String[] args) {CreateData createData = new CreateData(); 17ArrayList myArrayList = null; 18int[] myArray=null; 19SimpleDateFormat sdf = new SimpleDateFormat(“HH:mm:ss”);Scanner myScanner = new Scanner(System.in); 22System.out.println(“输入’1’使用一般的实现方式\t输入’2’使用哨兵技术实现方式:”); 23int temp = myScanner.nextInt(); 24INSERTION_SORT insertionSort=new INSERTION_SORT(); 25switch (temp) { 26case 1:myArrayList=createData.creat();myArray = (int[]) myArrayList.get(0);System.out.println(“一般插入法排序算法的时间如下:”);System.out.println(sdf.format(new Date())); 35myArray = insertionSort.insertionSort(myArray); 36System.out.println(sdf.format(new Date())); 37break; 38case 2: 39// myArray=(int[]) myArrayList.get(0);因为是地址传递,香港虚拟主机,香港虚拟主机,故这么做不能达到重新编排数据的效果myArrayList=createData.creat(); 42System.out.println(“哨兵插入法排序算法的时间如下:”); 43System.out.println(sdf.format(new Date())); 44myArray = insertionSort.insertionSort_Guard(myArrayList); 45System.out.println(sdf.format(new Date())); 46break; 47default: 48System.out.println(“error enter!”); 49break; 50 } 51System.out.println(“排序后的数据如下:”); 52for(int i=0;i<myArray.length;i++){ 53System.out.print(myArray[i]+” “); 54 } 55 System.out.println(); 56main(null); 57 } 58 59 } CreateData { ArrayList creat() {Scanner scanner = new Scanner(System.in); 67System.out.println(“请输入生成的数据量:”);[scanner.nextInt()]; 69// System.out.println(myArray.length);System.out.println(“请输入生成的数据的最大值:”); 72int stnCd = scanner.nextInt();mixNum = stnCd; 74int stnCdSub = 0;(int i = 0; i < myArray.length; i++) { 77myArray[i] = myRandom.nextInt(mixNum);// mixNum必须是常量(stnCd > myArray[i]) { 80stnCd = myArray[i]; 81stnCdSub = i; 82 } 83 } System.out.println(“排序前的数据:”); 86// for(int i=0;i<myArrayLength;i++){ 87// System.out.print(myArray[i]+” “); 88// }ArrayList returnArrayList = new ArrayList(); 91returnArrayList.add(0, myArray); 92returnArrayList.add(1, stnCd); 93returnArrayList.add(2, stnCdSub); 94return returnArrayList; 95 } 96 } INSERTION_SORT {[] insertionSort(int[] myArray) {102int key = 0;103int j = 0;104for (int i = 1; i < myArray.length; i++) {105key = myArray[i];106for (j = i – 1; j >= 0 && key < myArray[j]; j–) {107myArray[j + 1] = myArray[j];108 }109myArray[j + 1] = key;110 }111return myArray;112 }[] insertionSort_Guard(ArrayList myArrayList) {116int[] myArray = (int[]) myArrayList.get(0);117int stnCd = (Integer) myArrayList.get(1);118int stnCdSub = (Integer) myArrayList.get(2);myArray[stnCdSub] = myArray[0];121myArray[0] = stnCd;j = 0;124for (int i = 2; i < myArray.length; i++) {125stnCd = myArray[i];126for (j = i – 1; myArray[j] > stnCd; j–) {127myArray[j + 1] = myArray[j];128 }129myArray[j + 1] = stnCd;130 }131return myArray;132 }133 } * `output: 请输入生成的数据量: 500000 请输入生成的数据的最大值: 2000 一般插入法排序算法的时间如下: 21:50:58136 * 21:53:34 请输入生成的数据量: 500000 请输入生成的数据的最大值: 2000 哨兵插入法排序算法的时间如下: 21:55:07137 * 21:57:12138 */

posted on

,香港虚拟主机使用双手头脑与心灵的是艺术家,只有合作双手

我的“插入算法”实现

相关文章:

你感兴趣的文章:

标签云: