扑克牌是我们几乎每个人都可能玩过的游戏。最基本的扑克玩法都是一边摸牌,一边理牌。假如我们拿到了这样一手牌,如图9-5-1所示。啊,似乎是同花顺呀,别急,我们得理一理顺序才知道是否是真的同花顺。请问,如果是你,应该如何理牌呢?
应该说,哪怕你是第一次玩扑克牌,只要认识这些数字,理牌的方法都是不用教的。将3和4移动到5的左侧,再将2移动到最左侧,顺序就算是理好了。这里,我们的理牌方法,就是直接插入排序法。
(以上内容来自: 程杰. “大话数据结构” )
假设初始序列53462。以下画了个图表示执行过程
直接插入排序public class StraightInsertSort {
public static int[] StraightInsertSort(int[] arr){
int temp;
for(int i = 1; i < arr.length; i++){ // 从第二个数开始插入,第一个默认有序
if(arr[i] < arr[i-1]){ // 如果比第一个数大,就也有序;如果比第一个数小就要考虑插入
temp = arr[i];//记录当前数
int j;
for(j = i-1; j >= 0 && arr[j] > temp; j--){//从后往前循环,比当前数大就往后挪一个位置
arr[j+1] = arr[j];
}
//循环执行完后把arr[j+1]这个位置腾出来了,这个位置就是该插入的位置
arr[j+1] = temp;
}
}
return arr;
}
}
网友评论