java之插入排序
直接上代码:
--------------------------------------------------------------------
package com.mylearn;
/**
* 插入法排序
* 基本思想:在要排序的一组数据中,假设前面(n-1)[n>=2]个数已经是排好顺序的,现在要把第n个数插入到前面有序的数中,使得这n个数也是排序好的。
* 如此反复,只到排序好
*
* @author H
*
*/
public class ChaRuFa {
public static void main(String[] args) {
// 数组声明
int[] a = { 5, 1, 3, 0, 1, 4, -1 };
int L = a.length;
// 首先确保前两个元素是升序的
if (a[1] < a[0]) {
int tmp = a[0];
a[0] = a[1];
a[1] = tmp;
}
// 其次进行插入排序
for (int i = 2; i < L; i++) {
// 如果待插入的数小于或等于已排序的表头
if (a[i] <= a[0]) {
int tmp = a[i];
for (int j = i; j > 0; j--) {
a[j] = a[j - 1];
}
a[0] = tmp;
}
// 如果待插入的数大于或等于已排序的表尾
else if (a[i] >= a[i - 1])
continue;
// 如果待插入的数介于已排序的表中某两个数中间
else {
for (int k = 0; k < i - 1; k++) {
if (a[i] >= a[k] && a[i] <= a[k + 1]) {
int tmp1 = a[i];
for (int m = i; m > k + 1; m--) {
a[m] = a[m - 1];
}
a[k + 1] = tmp1;
}
}
}
}
for (int element : a)
System.out.println(element + " ");
}
}