插入排序一个数组,譬如重新对一把扑克进行排序
左手拿着已经排序好的牌,右手每次往左手的牌中插入新的牌
public class App {
public static void main() {
}
//插入排序,右边比左边大,升序排序
public void insertionSort(int[] arr){
//小于2个,没必要排序
if(arr.length<2){
return;
}
//从第二张牌开始比,左手初始一张牌
for(int i=1;i<arr.length;i++){
int key=arr[i];
int j=i-1;
//新的牌比老的牌小,老的牌右移动
while(j>=0&&arr[j]>key){
arr[j+1]=arr[j];
j=j-1;
}
//插入新牌
arr[j+1]=key;
}
}
}
时间复杂度
将arr[j]>key改为arr[j]<key 即可改为降序排序