选择排序法: 从右往左排,先找出最大的
public class MyDemo030 {
public static void main (String [] args) {
int [] arr = {8,4,2,1,23,344,12};
for (int row =0;row
插入排序法:固定第一位
//插入排序法
public class MyDemo031{
public static void main (String [] args) {
int [] arr = {8,4,2,1,23,344,12};
for (int i = 0;i= 0;j--) {//j=0
if (curr < arr[j]) {//(curr = 4,arr[0]=8)
arr[j+1] = arr[j]; //_,8,2,1
}else {
break;
}
arr[j] = curr;
}
}
for ( int i = 0;i
希尔排序法:首先计算步长 步长越长,组数越多
//希尔排序
public class MyDemo032 {
public static void main(String [] args ){
int [] arr = {8,4,2,1,23,344,12};
//分组插入
//首先计算步长 arr.length/2; 3 [8,1,12] [4,23] [2,344]
//小组排序 [1,8,12] [4,23] [2,344] ==>[1,4,2,8,23,344,12]
//重新计算新步长 原步长/2 1==>
//计算步长 每次步长缩短一半 直到步长为1 就结束
for (int jump = arr.length/2;jump>0;jump/=2) {
//从每组第二个数开始 多少组取决于步长
for(int i = jump;i < arr.length;i++){//arr[i]=3 = 1
//取出每组第2个数
int value = arr[i];
//循环 小组中数据排序
int j=i-jump;
while (j>=0 && value>arr[j]) {
arr[j+jump]=arr[j];
j-=jump;
}
arr[j+jump] = value;
}
}
for ( int i=0;i