hooyantsing's Blog

第9次课程

字数统计: 727阅读时长: 3 min
2019/04/29

源辰74班

第9次课程

04.29.2019

内容

1.数组连续查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//嵌入上一节课“4.方法(函数)的调用”中

//调用 查找功能-连续查找
       System.out.println("请输入要查找的元素:");
       int tofind = sc.nextInt();
       System.out.println("查找所有符合条件"+tofind+"的元素位置:");
       
       int tofindindex = -1;
       do {
           tofindindex++;
           tofindindex =  find(tofind,x,tofindindex);
           if(tofindindex!=-1) {
               System.out.println(tofind+"的位置在:"+(tofindindex+1));
           }
       }while(tofindindex !=-1);

//查找功能-连续查找
public static int find(int x,int[] arr,int  start) {
       int index = -1;
       for(int i=start;i<arr.length;i++) {
           if(x==arr[i]) {
               index = i;
               break;
           }
       }
       return index;
    }

2.[项目]生成数组、打印数组、打乱数组、冒泡排序、选择排序

生成数组方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private static int[] genArr(int length, int  min, int max) {
       //容错
       if(length<=0) {
           System.out.println("系统异常代码1-1:数组长度必须大于0,实际输入的长度为:"+length);
           return null;
       }
       if(max<=min) {
           System.out.println("系统异常代码1-2:请按照要求填写数组范围...");
           return null;
       }

       Random r = new Random();
       int[] arr = new int[length];
       for(int i=0;i<arr.length;i++) {
           arr[i] =  r.nextInt(max-min)+(min);
       }
       return arr;
       
    }

打印数组方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private static void printArr(int[] arr) {
       //容错
       if(arr==null) {
           System.out.println("系统异常代码2-1:待输出的数组异常...");
           return;
       }

       for(int i=0;i<arr.length;i++) {
           if(i%10==0) {
               System.out.println();
               }
           System.out.print(arr[i]+"  ");
       }
       
    }

打乱数组方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private static void shuffleArr(int[] arr) {
       Random r = new Random();
       for(int i=0;i<arr.length*2;i++) {
           int index1 =  r.nextInt(arr.length);
           int index2 =  r.nextInt(arr.length);
           swap(arr,index1,index2);
       }
    }

//交换数组元素
private static void swap(int[] arr, int  index1, int index2) {
       int temp = arr[index1];
       arr[index1] = arr[index2];
       arr[index2] = temp;
    }

冒泡排序方法:

原理图:

**187ced1757e7a2a3f5059ebd93ff8b08.png

**

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private static void bubbleSort(int[] arr) {
       if(arr==null) {
           System.out.println("系统异常代码3-1:待输出的数组异常...");
           return;
       }
       for(int i=0;i<arr.length-1;i++) {
           for(int j=0;j<arr.length-i-1;j++)  {
               if(arr[j]>arr[j+1]) {
                  swap(arr,j,j+1);
               }
           }
       }
    }

//交换数组元素
private static void swap(int[] arr, int  index1, int index2) {
       int temp = arr[index1];
       arr[index1] = arr[index2];
       arr[index2] = temp;
    }

选择排序方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
private static void selectSort(int[] arr) {
       for(int i=0;i<arr.length;i++) {
           int minIndex =  findMinIndex(arr,i);
           swap(arr,minIndex,i);
       }
    }

//查最小值的下标
    private static int findMinIndex(int[]  arr, int i) {
       int minIndex = i;
       for(int j=i+1;j<arr.length;j++) {
           if(arr[j]<arr[minIndex]) {
               minIndex = j;
           }
       }
       return minIndex;
    }

//交换数组元素
private static void swap(int[] arr, int  index1, int index2) {
       int temp = arr[index1];
       arr[index1] = arr[index2];
       arr[index2] = temp;
    }

插入排序方法:

原理图:

64e5b9d8123bb2bdd4d5f86de4199ebf.png

1
2
3
4
5
6
7
8
9
10
11
private static void insertSort(int[] arr) {
       for(int i=1;i<arr.length;i++) {
           int next = arr[i];
           int j = i;
           while(j>0&&arr[j-1]>next) {
               arr[j] = arr[j-1];
               j--;
           }
           arr[j] = next;
       }
    }
CATALOG