二分插入法
@Test
public void test2(){
int[] ints = {0,1, 3, 8, 4, 6, 9, 2};
int i,j;
for ( i = 2; i < ints.length; i++) {
//如果后一个的数大于前一个的数,就不用进行排序了
if(ints[i]<ints[i-1]){
//将要进行排序的数放入哨兵位置
ints[0]=ints[i];
int low = 1;
int hight = i - 1;
while (low <= hight){
int mid = (low+hight)/2;
if(ints[0]>ints[mid]){
low = mid + 1 ;
}else {
hight = mid-1;
}
}
for (j = i-1; j >=hight+1 ; j--) {
ints[j+1] = ints[j];
}
ints[hight+1] = ints[0];
System.out.println("折半排序"+Arrays.toString(ints));
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tivI4l4b-1658757013197)(C:\Users\黄晓丽\AppData\Roaming\Typora\typora-user-images\image-20220724172547653.png)]
直接插入排序(顺序插入排序)
public void test1(){
int[] ints = {0,1, 2, 8, 4, 6, 3, 2};
int i,j;
for (i = 2; i < ints.length; i++) {
ints[0]= 0;
if(ints[i]<ints[i-1]){
ints[0]=ints[i];
for (j = i-1; ints[0]<ints[j] ; j--) {
ints[j+1] = ints[j];
}
ints[j+1] = ints[0];
}
System.out.println("第"+i+"次的排序"+Arrays.toString(ints));
}
}
冒泡排序(交换排序)
public void test(){
int[] ints = {92, 5, 65, 18, 9, 20};
int flag=1;
for (int i = 1; i < ints.length&&flag==1; i++) {
flag=0;
for(int j = 1;j <=ints.length - i;j++ ){
if(ints[j]< ints[j-1]){
flag=1;
int temp = ints[j];
ints[j] = ints[j-1];
ints[j-1] = temp;
}
}
System.out.println("第"+i+"次的排序"+Arrays.toString(ints));
}
}
ut.println(“第”+i+“次的排序”+Arrays.toString(ints));
}
}