一、直接插入排序算法分析
直接插入排序是假定前i个构成的子序列是处于已排序的情况下进行排序的,然后将第i个元素与前i个构成的子序列逆序进行比较,如果是要升序排序,则比较第i个元素是否比j=i-1(i-1需要>=0)的元素大,如果是则第i个元素的位置(即j+1的位置上)保持不动,反之则将j=i-1的元素放置到i的位置,再进行第i个元素与j=i-2(i-2需要>=0)的,依次进行,如果第i个元素刚好比j=i-3大,则将第i个元素插入到j=i-2(即j+1的位置)上!
二、代码实现
package top.einino.insertionsort;
public class StraightInsertionSort {
//直接插入排序,升序排序
public static void insertSortAsc(int[] keys){
for(int i=1;i<keys.length;i++){
int temp = keys[i],j;//从数组的第二个开始进行插入排序
for(j=i-1; j>=0 && temp<keys[j]; j--){