您的位置 首页 java

「Java」排序算法(1)

基本工具

 /**
 * 判断数组arr是否递增有序。
 * @param arr 需要验证的数组
 * @return 递增有序返回true,否则返回false。
 */public  static   boolean  isSorted(int[] arr) {
// 边界处理
if(arr.length < 2) {
return true;
}
// 递增判断
for(int i = 0; i < arr.length -1; i++) {
if(arr[i] > arr[i + 1]) {
return false;
}
}
return true;
}

/**
 * 获取随机长度,随机值的整型数组。
 * @param length 数组长度
 * @param maxValue 数组值最大值。
 * @return 
 */public static int[] getArr(int maxLen, int maxValue) {
// 随机长度
int len = (int)(Math.random() * maxLen);
int[] arr = new int[len];
// 随机值
for(int i = 0; i < len; i++) {
arr[i] = (int)(Math.random() * maxValue);
}
return arr;
}

/**
 * 交换数组i和j两个位置上的数字。
 */public static  void  swap(int[] arr, int i, int j) {
int k = arr[i];
arr[i] = arr[j];
arr[j] = k;
}

// 打印数组
public static void printArr(int[] arr) {
for(int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}  

选择排序

 /**
 * 选择排序。
 * 遍历数组,找到最小值;放到最小位置。
 */public static void selectSort(int[] arr) {
// 边界处理
if(arr.length < 2) {
return ;
}
// 从0开始遍历
for(int i = 0; i < arr.length; i++) {
// 记录每次遍历的最小值序号
int minIndex = i;
// 从遍历到的当前序号开始,找到后面的最小值
for(int j = i + 1; j < arr.length; j++) {
if(arr[j] < arr[minIndex]) {
minIndex = j;
}
}
// 将最小值放到当前位置
swap(arr, i, minIndex);
}
}  

冒泡排序

 /**
 * 冒泡排序。
 * 两两对比,较大的靠后。
 */public static void bubbleSort(int[] arr) {
// 边界处理
if(arr.length < 2) {
return ;
}
// 冒泡排序
for(int i = 0; i < arr.length; i++) {
// 每轮冒泡,确定最大值
for(int j = 1; j < arr.length - i; j++) {
// 两两对比,较大的靠后
if(arr[j - 1] > arr[j]) {
swap(arr, j - 1, j);
}
}
}
}  

插入排序

 /**
 * 插入排序。
 * 前方已经有序,将当前数据放到前方有序数组中。
 */public static void insertSort(int[] arr) {
// 边界处理
if(arr.length < 2) {
return ;
}
// 插入排序
for(int i = 1; i < arr.length; i++) {
int numIndex = i;
// 将当前值,插入到左边有序数组中
// 有序数组的范围: (i - 1) ~ 0
for(int j = i - 1; (j >= 0) && (arr[numIndex] < arr[j]); j--) {
swap(arr, numIndex, j);
numIndex--;
}
}
}  

排序测试

 public static void main(String[] args) {
int[] arr = getArr(10, 20);
printArr(arr);

// selectSort(arr);
// bubbleSort(arr);
insertSort(arr);

printArr(arr);

boolean isSorted = isSorted(arr);
System.err.println(isSorted);
}  

文章来源:智云一二三科技

文章标题:「Java」排序算法(1)

文章地址:https://www.zhihuclub.com/180846.shtml

关于作者: 智云科技

热门文章

网站地图