博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法与数据结构基础(一)排序基础1.选择排序
阅读量:5240 次
发布时间:2019-06-14

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

一句话概括:循环每次从未排序里选择一个最小或的最大的元素依次放好,直到最后(没有未排序的了)。

1.int型数组选择排序

import java.util.Random;public class test1 {		private static int a[];	public static void main(String[] args) {		produceData(10,1,10);		print();		sort();		print();			}	//产生数据	private static void produceData(int n,int min,int max ) {				a = new int[n];				Random random = new Random();				for(int i= 0;i
a[j]) minindx = j; } int tmp = a[minindx]; a[minindx] = a[i]; a[i] = tmp; } } private static void print() { int n = a.length; for(int i=0;i
2.使用Comparable接口实现各种数据类型排序

自定义的Student类:

import java.util.Comparator;public class Student implements Comparable
{ public String name; public int score; public Student(String name, int score) { super(); this.name = name; this.score = score; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } @Override public String toString() { return "Student [name=" + name + ", score=" + score + "]"; } @Override public int compareTo(Student o) { if(this.getScore()>o.getScore()) return 1; else if(this.getScore()
排序算法

import java.util.Comparator;import java.util.Random;public class test1 {		public static void main(String[] args) {		Student[] stus = produceData();		print(stus);//打印原来顺序		sort(stus);		print(stus);				//比较Double类型(也实现了Comparable接口)		Double[] d = {3.14,3.11,3.99};		sort(d);		print(d);			}	//产生数据	private static Student[] produceData() {				Student[] stus = new Student[4];		stus[0] = new Student("A",66);		stus[1] = new Student("B",90);		stus[2] = new Student("C",80);		stus[3] = new Student("D",100);				return stus;			}	//排序	private static void sort(Comparable[] arry) {		int n = arry.length;				for(int i=0;i
3.编写一个类来测试排序算法运行时间(利用反射和系统时间实现)

import java.lang.reflect.Method;public class SortTestHelper {	public static void testSort(String sortClassName,Comparable[] arry)	{		try {						//告诉类名即可获取class对象			Class sortClass =  Class.forName(sortClassName);			//指明方法名和参数列表就可以获取			//getDeclaredMethod()获取的是类自身声明的所有方法,包含public、protected和private方法。	  			//getMethod()获取的是类的所有共有方法,这就包括自身的所有public方法,和从基类继承的、从接口实现的所有public方法。			Method sortMethod = sortClass.getDeclaredMethod("sort", new Class[]{Comparable[].class});			Object[] params = new Object[]{arry};						long startTime = System.currentTimeMillis();						//第一个参数是调用哪个对象实例的此方法,静态就写null,第二个为方法参数			sortMethod.invoke(null, params);						long overTime = System.currentTimeMillis();						System.out.println("耗时:"+(overTime-startTime+" ms!"));						judgeSorted(arry);					} catch (Exception e) {			e.printStackTrace();		}	}	private static void judgeSorted(Comparable[] arry) {				for (int i = 0; i < arry.length-1; i++) {			if(arry[i].compareTo(arry[i+1])<0)			{				System.out.println("排序失败!");				return;			}		}		System.out.println("排序成功!");			}		public static void print(Object[] data) {				int n = data.length;				for(int i=0;i
max; Integer[] data = new Integer[n]; for (int i = 0; i < data.length; i++) { data[i] = new Integer((int)(Math.random()*(max-min+1))+min); } return data; } }

转载于:https://www.cnblogs.com/chz-blogs/p/9380990.html

你可能感兴趣的文章
用js简单实现一下迪克斯特拉算法
查看>>
XML的工作原理
查看>>
设置 git config 的一些默认配置
查看>>
人生是一对一的搏斗
查看>>
WinForm 中ComboBox 绑定总结
查看>>
C# 学习记录
查看>>
楼梯T-SQL:超越基础6级:使用CASE表达式和IIF函数
查看>>
CentOS下安装Subversion简记
查看>>
(转)使用零宽断言来匹配不包含连续字符串的行
查看>>
JQUERY1.9学习笔记 之基本过滤器(十) 非选择器
查看>>
SD第九届省赛B题 Bullet
查看>>
Codeforces 1132G Greedy Subsequences 线段树
查看>>
线段树
查看>>
【Leetcode】115. Distinct Subsequences
查看>>
系统子模块_MCU(LPC)整体流程
查看>>
【转载】儒林外史人物——严贡生和严监生(一)
查看>>
svn 结合rsync 的代码发布系统
查看>>
安装phpredis模块
查看>>
gitlab web登入密码忘记以后可以用如下方式修改密码
查看>>
android学习之LayoutInflater的用法,在myAdapter getView()里将多个TextView组件压缩成一个View控件,并在listView里显示...
查看>>