博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
选择排序Java版
阅读量:7227 次
发布时间:2019-06-29

本文共 2451 字,大约阅读时间需要 8 分钟。

package dataStructureAlgorithmReview.day01;import java.util.Arrays;/** *  * @author shundong * */public class Code_02_SelectionSort {	//选择排序	public static void selectionSort(int[] arr) {		if (arr == null || arr.length < 2) {			return;		}		for (int i = 0; i < arr.length - 1; i++) {			int minIndex = i;//将 i位置下标的元素作为最小值			//内层循环是遍历所有的数组 找出最小值 赋值给mixIndex			for (int j = i + 1; j < arr.length; j++) {				// 吧 i 和 i+1 做比较 较小的赋值给 minIndex				minIndex = arr[j] < arr[minIndex] ? j : minIndex;			}			//将最小值 赋值给 当前第一个位置  下一次即 次一的 位置 i++的			swap(arr, i, minIndex);		}	}	public static void swap(int[] arr, int i, int j) {		int tmp = arr[i];		arr[i] = arr[j];		arr[j] = tmp;	}	// for test	public static void comparator(int[] arr) {		Arrays.sort(arr);	}	// for test	public static int[] generateRandomArray(int maxSize, int maxValue) {		int[] arr = new int[(int) ((maxSize + 1) * Math.random())];		for (int i = 0; i < arr.length; i++) {			arr[i] = (int) ((maxValue + 1) * Math.random()) - (int) (maxValue * Math.random());		}		return arr;	}	// for test	public static int[] copyArray(int[] arr) {		if (arr == null) {			return null;		}		int[] res = new int[arr.length];		for (int i = 0; i < arr.length; i++) {			res[i] = arr[i];		}		return res;	}	// for test	public static boolean isEqual(int[] arr1, int[] arr2) {		if ((arr1 == null && arr2 != null) || (arr1 != null && arr2 == null)) {			return false;		}		if (arr1 == null && arr2 == null) {			return true;		}		if (arr1.length != arr2.length) {			return false;		}		for (int i = 0; i < arr1.length; i++) {			if (arr1[i] != arr2[i]) {				return false;			}		}		return true;	}	// for test	public static void printArray(int[] arr) {		if (arr == null) {			return;		}		for (int i = 0; i < arr.length; i++) {			System.out.print(arr[i] + " ");		}		System.out.println();	}	// for test	public static void main(String[] args) {		int testTime = 500000;		int maxSize = 100;		int maxValue = 100;		boolean succeed = true;		for (int i = 0; i < testTime; i++) {			int[] arr1 = generateRandomArray(maxSize, maxValue);			int[] arr2 = copyArray(arr1);			selectionSort(arr1);			comparator(arr2);			if (!isEqual(arr1, arr2)) {				succeed = false;				printArray(arr1);				printArray(arr2);				break;			}		}		System.out.println(succeed ? "Nice!" : "Fucking fucked!");		int[] arr = generateRandomArray(maxSize, maxValue);		printArray(arr);		selectionSort(arr);		printArray(arr);	}}

  

转载于:https://www.cnblogs.com/shundong106/p/9832638.html

你可能感兴趣的文章
文件操作命令一cp 2
查看>>
Multi-Mechanize工程目录结构说明
查看>>
halt
查看>>
标准ACL+扩展ACL+命名ACL
查看>>
Meteor应用的启动过程分析
查看>>
九曲黄河万里沙,浪淘风簸自天涯 — 正则表达式
查看>>
欲哭无泪,联想笔记本性价比
查看>>
很简单的在Ubuntu系统下安装字体和切换默认字体的方法
查看>>
我的友情链接
查看>>
dojo框架用hitch实现函数与上下文的绑定
查看>>
ubuntu编译安装vim7.4
查看>>
python之利用PIL库实现页面的图片验证码及缩略图
查看>>
IP-COM设置×××
查看>>
VPC配置案例
查看>>
十年IT运维谈(五):要专业化还是平台化?
查看>>
分享超级给力的一个外发光Shader
查看>>
oblog_4.6_SQL 语句
查看>>
通过Git WebHooks+脚本实现自动更新发布代码之shell脚本
查看>>
对象实例化、字符串的使用方法
查看>>
keepalived基于LVS实现高可用,实现web服务的高可用
查看>>