【算法基础】秒懂系列-插入排序图解和代码案例

喜欢我的内容,请点赞、关注、转发哦!

插入排序图解

【算法基础】秒懂系列-插入排序图解和代码案例

代码案例

<code>/**
* 测试插入排序
*
* @author 大叔
*/
public class Insertion {
public static void main(String[] args) {
Integer[] arr = {4, 3, 2, 10, 12, 1, 5, 6};
sort(arr);
System.out.println("arr:" + Arrays.toString(arr));
}

/**
* 对数组a中的元素进行排序
*
* @param a
*/
public static void sort(Comparable[] a) {
for (int i = 0; i < a.length; i++) {
for (int j = i; j > 0; j--) {
//比较索引j处的值和索引j-1处的值,如果索引j-1处的值比索引j处的值大,则交换数据,如果不大,那么就找到合适的位置了,退出循环即可;
if (greater(a[j - 1], a[j])) {
exchange(a, j - 1, j);
} else {
break;
}
}
}
}

/**
* 比较v元素是否大于w元素
*
* @param v
* @param w
* @return
*/
private static boolean greater(Comparable v, Comparable w) {
return v.compareTo(w) > 0;
}


/**
* 交换数组a元素i和j的位置
*
* @param a
* @param i
* @param j
*/
private static void exchange(Comparable[] a, int i, int j) {
Comparable temp = a[i];
a[i] = a[j];
a[j] = temp;
}

}/<code>

喜欢我的内容,请点赞、关注、转发哦!


分享到:


相關文章: