1 package org.webdriver.autotest.Study; 2 import java.util.*; 3 public class sort_examp{ 4 public static void main(String[] args) 5 { 6 Integer[] num={49,38,65,97,76,13,27,49,78,34,12,64,1}; 7 //insertsort(num); 8 //selectsort(num); 9 maopaosort(num); 10 11 12 } 13 14 //直接插入排序 15 public static void insertsort(Integer[] num) 16 { 17 System.out.println("排序之前:"); 18 for(int i=0;i<num.length;i++) 19 { 20 System.out.print(num[i]+" "); 21 } 22 System.out.println(); 23 //直接插入排序,从数组第二个位置开始 24 for(int i=1;i<num.length;i++) 25 { 26 //待插入元素,从第二个元素开始.num[i]为前一组元素 27 int insertnum=num[i]; 28 int j; 29 for(j=i-1;j>=0;j--) 30 { 31 //将大于待插入元素的,值往后移1位,num[j]为后一组元素 32 if(num[j]>insertnum) 33 {num[j+1]=num[j];}else { 34 break; 35 } 36 37 } 38 //直到不存在num[j]>insertnum的时候,不移动位置 39 num[j+1]=insertnum; 40 System.out.println(); 41 System.out.println("第:"+i+"轮排序"); 42 for (int k = 0; k < num.length; k++) 43 { 44 System.out.print(num[k]+" "); 45 } 46 47 } 48 System.out.println(); 49 System.out.println("排序之后:"); 50 for (int i = 0; i < num.length; i++) 51 { 52 System.out.print(num[i]+" "); 53 } 54 55 } 56 //选择排序 57 public static void selectsort(Integer[] num) 58 { 59 System.out.println("排序之前:"); 60 for(int i=0;i<num.length;i++) 61 { 62 System.out.print(num[i]+","); 63 } 64 System.out.println(); 65 //i为排序结果的顺序号 66 for(int i=0;i<num.length;i++) 67 { 68 //假定一个最小值min 69 int min=num[i]; 70 //n存储最小值索引(位置) 71 int n=i; 72 //从第二个数开始比较,把每次比较出的最小值放到左边 73 for(int j=i+1;j<num.length;j++) 74 { 75 if(num[j]<min)//找出最小值 76 { 77 //num[j]最小,将num[j]赋值给min,并记录num[j]原来的位置保存到n 78 min=num[j]; 79 n=j; 80 81 } 82 //将最小值跟比较值交换位置,将num[i]放到num[j]的位置 83 num[n]=num[i]; 84 //将最小值按顺序放到i的位置 85 num[i]=min; 86 } 87 System.out.println(); 88 int l=i+1; 89 System.out.println("第:"+l+"轮排序"); 90 for (int k = 0; k < num.length; k++) 91 { 92 System.out.print(num[k]+" "); 93 } 94 } 95 System.out.println(); 96 System.out.println("排序之后:"); 97 for (int i = 0; i < num.length; i++) 98 { 99 System.out.print(num[i]+" "); 100 } 101 102 } 103 //冒泡排序 104 public static void maopaosort(Integer[] num) 105 { 106 System.out.println("排序之前:"); 107 for (int i = 0; i < num.length; i++) 108 { 109 System.out.print(num[i]+" "); 110 } 111 //冒泡排序 112 for (int i = 0; i < num.length; i++) 113 { 114 for(int j = 0; j<num.length-i-1; j++) 115 { 116 //这里-i主要是每遍历一次都把最大的i个数沉到最底下去了,没有必要再替换了 117 if(num[j]>num[j+1]) 118 { 119 int temp = num[j]; 120 num[j] = num[j+1]; 121 num[j+1] = temp; 122 } 123 } 124 System.out.println(); 125 int l=i+1; 126 System.out.println("第:"+l+"轮排序"); 127 for (int k = 0; k < num.length; k++) 128 { 129 System.out.print(num[k]+" "); 130 } 131 132 133 } 134 System.out.println(); 135 System.out.println("排序之后:"); 136 for (int i = 0; i < num.length; i++) 137 { 138 System.out.print(num[i]+" "); 139 } 140 } 141 142 }