java 随机正整数 排序 Java产生随机数并排序
第1部分:随机数
1.1Math.random()函数
Math.random随机生成0~1个房间的随机点数,前面包含(0.00)后不包含(1)
通常没有什么实际意义,需要转换成整数。
例程:生成30-50的随机数量
int t = Math.random*20 30;
1.2 Random类:
语法:Random r = new Random();
常用的方法:
nextInt();//在int类型取值范围内随机生成整数,对我们来说意义不大。
nextInt(参数);在指定范围内随机生成整数(常见)
例: nextInt(100);在0~100之间随机生成整数。
训练:
双色球生成结合数组和随机数量完成。
需求: 红球 1~33(包含) 在号码中随机生成6个不重复的号码添加到球的数组中去蓝球。 在1~16(包括)号码中随机生成一个号码,扩展到红球数组。
分析: 球的数组 int[] bool=new int[6]
第一个球: 随机生成一个数字,添加到数组中,后面生成的每个球都需要与前面的每个球进行比较。只有在不重复的情况下才能添加到数组中。如果重复,放弃,重新生成比较,红球功能会在6个球全部添加到数组中时完成。蓝球可以通过扩展添加到bool数组中;
例程:DoubleColerBall.java
1 package random;
2
3 import java.util.Arrays;
4 import java.util.Random;
5
6 public class DoubleColerball {
7
8 public static void main(String[] args) {
9
10 Random r = new Random();
11
12 int[] redBall =new int[6];
13 int index = 0;
14
15 redBall[index ] = r.nextInt(33) 1; //生成第一个数字
16
17 loop: while(true) {
18
19 int x = r.nextInt(33) 1;
20
21 //判断x的生成,是否在数组中
22 for (int j=0; j
View Code
第2节有几种排序算法
冒泡排序算法2.1
2.1.1原理实现
将数列从小到大排序(或从大到小),将每个位置数与下一个位置数进行比较。如果比后面的数字大,可以交换位置,一轮可以得到最大数字,第二轮可以得到第二大数字。...
2.1.2实例分析
例: [6,8,5,7,4]想要的最终结果是[4,5,6,7,8]
6 8 5 7 4
第一轮第一轮: 6 8 5 7 4
第一轮第二轮: 6 5 8 7 4
第三轮第一轮: 6 5 7 8 4
第四轮第一轮: 6 5 7 4 8
第二轮第一次: 5 6 7 4 8
第二轮第二轮: 5 6 7 4 8
第三轮第二轮: 5 6 4 7 8
第三轮第一轮: 5 6 4 7 8
第三轮第二轮: 5 4 6 7 8
第四轮第一次: 4 5 6 7 8
规则:轮数每增加一次,比较次数就会减少一次。
Demo2.java
View Code
2.2 选择排序方法:
2.2.1原理实现
选择排序方法:
第一趟,等待排序记录r[1]~r[n]选择最小的记录,与r[1]交换;
第二趟,等待排序记录r[2]~r[n]选择最小的记录,与r[2]交换;以此类推,第一趟在等待排序记录r[i]~r[n]选择最小的记录,把它和r[i]交换,使有序序列持续增长,直至所有排序完成。
例:
最初的序列:{49 27 65 97 76 12 38}
第1趟:12和49交换:12{27 65 97 76 49 38}
第2趟:27不动 :12 27{65 97 76 49 38}
第3趟:65和38交换:12 27 38{97 76 49 65}
第4趟:97和49交换:12 27 38 49{76 97 65}
第5趟:76和65交换:12 27 38 49 65{97 76}
第6趟:97和76交换:12 27 38 49 65 76 97 完成
分析:
在设定数组中,第一个数字是最小数字。
将其与数组后面的每个数字进行比较,如果有较小的交换两个位置,
Demo2.java
1 package random;
2
3 import java.util.Arrays;
4 /**
5 *
6 * @项目名称:JavaSEDay07m
7 * @模块化功能:实现排序选择
8 * @模块版本:
9 * @JDKVersions:JDK 8.0
10 * @author: Kanekiyi
11 */
12 public class Demo3 {
13
14 public static void main(String [] args) {
15 int[] arr={5,9,2,807,89,88};
16 int temp=0;
17
18 //表面循环依次假设数组中的每个数是最小值。
19 for(int i=0; iarr[j]) {
25 min = arr[j];
26 minIndex = j;
27 }
28
29 }
30 //交换最小值
31 temp = arr[i];
32 arr[i] = arr[minIndex];
33 arr[minIndex] = temp;
34
35 }
36 System.out.println(Arrays.toString(arr));
37
38 }
39 }
View Code
2.3 插入排序法:
2.3.1原理实现
插入排序类似于整理扑克牌,将每张牌插入其它有序的牌中。
插入式排序由N-1趟排序组成,对于P=1至N-1趟,插入式排序确保从位置0到位置P上的元素已经排序。
简单来说,插入排序总共需要排序N-1次。从index为1开始,我们将该位置的元素与之前的元素进行比较,并将其放置在合适的位置。这样循环下来之后,就是有序数组了。
2.3.2实例分析
Demo2.java
1 //插入排序算法
2 public static void insertSort() {
3 int[] arr = {3,6,8,4,2,2,9};
4 int[] arr2 = new int[arr.length];
5 arr2[0] = arr[0];
6 int temp=0;
7
8 for(int i=1; iarr2[k]) { //比较插入数和原数组中的数并交换位置。
14 temp = arr2[k];
15 arr2[k] = arr[i];
16 arr[i] = temp;
17 }
18 }
19 }
20 //arr2[i] = temp;
21 }
22 System.out.println(Arrays.toString(arr2));
23 }
View Code
方法更加简单。
参照:
综合实践:利用数组和数据结构完成学生管理系统(SMS1).0)的研发:
要求:1、为了保存数据,建立学生数组
2、数字选择功能通过键盘输入,不同的数字完成不同的功能,需要对学生数字完成增删功能;
代码:SMS.java
1 package random;
2
3 import java.util.Arrays;
4 import java.util.Scanner;
5
6 /**
7 * 学生管理系统1.0版本
8 * @author Kanekiyi
9 * 分析:1、while 循环
10 * 2、Scannre
11 * 3、if 支系
12 * 4、数组 扩容 缩容 遍历
13 * String
14 * */
15
16 public class SMS {
17
18 public static void main(String[] args) {
19 System.out.println(“欢迎使用学生管理系统1.0版本”);
20
21 String[] students = {“刘一”,"孙二","张三","李四"};
22
23 Scanner sc = new Scanner(System.in);
24
25 while(true) {
26 System.out.println("1.加入学生 2.删掉学生 3.修改学生 4.学生目录 5.查询学生 6.撤出");
27 System.out.println(“请输入数字选择功能”);
28
29 int type = sc.nextInt();
30
31 增加学生//1
32 if (type ==1) {
33 System.out.println(“请输入添加学生姓名”);
34 String name = sc.next();
35 students = Arrays.copyOf(students,students.length 1);
36 students[students.length-1] = name;
37 System.out.println(“添加成功”);
38 }
39
40 //2、删掉学生
41 if (type ==2) {
42 boolean flag = false;
43 System.out.println(“请输入需要删除的学生名称”);
44 String name = sc.next();
45
46 for(int i=0; i
本文仅代表作者观点,版权归原创者所有,如需转载请在文中注明来源及作者名字。
免责声明:本文系转载编辑文章,仅作分享之用。如分享内容、图片侵犯到您的版权或非授权发布,请及时与我们联系进行审核处理或删除,您可以发送材料至邮箱:service@tojoy.com




