package cn.xyc.sort;
import cn.xyc.sortBase.SortBase;
import cn.xyc.sortUtil.GenerateDataFileUtil;
import cn.xyc.sortUtil.GetDataUtil;
/**
*
* 描述:选择排序<br/>
* 工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,<br/>
* 存放在序列的起始位置 ,直到全部待排序的数据元素排完。
*
* <pre>
* HISTORY
* ****************************************************************************
* ID DATE PERSON REASON
* 1 2016年9月17日 80002253 Create
* ****************************************************************************
* </pre>
*
* @author 80002253
* @since 1.0
*/
@SuppressWarnings("rawtypes")
public class SelectionSort extends SortBase {
/**
* 每次选出最小的放到数组的最前面
*
* @param a
*/
public static void sortAsc(Comparable[] a) {
// 1.遍历和比较
for (int i = 0; i < a.length; i++) {
int min = i;
for (int j = i + 1; j < a.length; j++) {
if (less(a[j], a[min])) {
min = j;
}
}
// 交换最小和剩余元素中的第一个元素的位置
if (min != i) {
exch(a, min, i);
}
}
}
/**
* 每次选出最大的放到数组的最前面
*
* @param a
*/
public static void sortDesc(Comparable[] a) {
for (int i = 0; i < a.length; i++) {
int max = i;
for (int j = i + 1; j < a.length; j++) {
if (less(a[max], a[j])) {
max = j;
}
}
if (max != i) {
exch(a, i, max);
}
}
}
public static void main(String[] args) {
GenerateDataFileUtil.generate("d:/user/80002253/桌面/a.txt", 10);
Comparable[] datas = GetDataUtil.getData("d:/user/80002253/桌面/a.txt");
SelectionSort.sortAsc(datas);
SelectionSort.show(datas);
SelectionSort.sortDesc(datas);
SelectionSort.show(datas);
}
}
java数据结构和算法(SelectionSort)
最新推荐文章于 2021-02-27 14:56:13 发布