您的位置 首页 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

关于作者: 智云科技

热门文章

网站地图