public class Main{
public static void main(String[] args) {
//int arr[]={110,34,65,1};
int arr[]={110,34,119,1};
for(int i=1;i<arr.length;i++){
int a=arr[i];//让a=数组的第二个数,从第二个数开始比较
int b=i-1;//让b等于要比较的数的前一个数
while(b>=0 && a<arr[b]){//b>=0的目的是防止越界,a<arr[b],是判断拿到的数是否比它前一个数小,如果小则交换,否则便在原位
//说明待插入的数还没有找到插入位置
arr[b+1]=arr[b];//将拿到的数的前一个数,后移一位
//System.out.println(Arrays.toString(arr));//检测每次的交换结果
b--;//确保比较的次数,让拿到的数跟前面的前面的数比较(反复比较,直到元素初始位置前面的数都比完)
}
//当退出while循环时说明插入位置被找到,这个位置是arr[b+1]
arr[b+1]=a;//当b<0 && a>arr[b]时说明当前的数就是目前最大的数,位置不变。或者说将拿到的数插入到比较数的后面一位
System.out.println("第"+i+"轮:");
System.out.println(Arrays.toString(arr));//输出排序后的数组
}
}
}
插入排序的基础应用
猜你喜欢
转载自blog.csdn.net/qq_62731133/article/details/123832919
今日推荐
周排行