package cn.xyc.sort;
import cn.xyc.sortBase.SortBase;
import cn.xyc.sortUtil.GenerateDataFileUtil;
import cn.xyc.sortUtil.GetDataUtil;
/**
*
* 描述:插入排序
*
* <pre>
* HISTORY
* ****************************************************************************
* ID DATE PERSON REASON
* 1 2016年10月9日 80002253 Create
* ****************************************************************************
* </pre>
*
* @author 蒙奇·D·许
* @since 1.0
*/
@SuppressWarnings("rawtypes")
public class InsertSort extends SortBase {
/**
* 升序排序
*
* @param a
*/
public static void sortAsc(Comparable[] a) {
// 将待排序的元素插入到已经排序完成的元素当中,涉及到移动元素而不是单纯的交换
for (int i = 1; i <= a.length - 1; i++) {
// i为未排序的元素,默认0位元素已经排序完成
// 遍历的是已经排序完成的部分
Comparable temp = a[i];
int ins = i;
for (int j = i - 1; j >= 0 && less(temp, a[j]); j--) {
// 移动位置为temp腾出空位
a[j + 1] = a[j];
ins = j;
}
// 在ins出插入元素
if (ins != i) {
a[ins] = temp;
}
}
}
/**
* 降序排序
*
* @param a
*/
public static void sortDesc(Comparable[] a) {
for (int i = 1; i < a.length; i++) {
// i为待排序的元素
// 循环的为已经排序完成的元素
Comparable temp = a[i];
int ins = i;
for (int j = i - 1; j >= 0 && less(a[j], temp); j--) {
// 移动位置为temp腾出空位
a[j + 1] = a[j];
ins = j;
}
if (ins != i) {
a[ins] = temp;
}
}
}
public static void main(String[] args) {
GenerateDataFileUtil.generate("d:/user/80002253/桌面/a.txt", 100);
Comparable[] a = GetDataUtil.getData("d:/user/80002253/桌面/a.txt");
InsertSort.sortAsc(a);
InsertSort.show(a);
System.out
.println("==================================================================================");
InsertSort.sortDesc(a);
InsertSort.show(a);
}
}
java数据结构和算法(InsertSort)
最新推荐文章于 2021-11-20 23:52:33 发布