算法

Java常见算法

1.冒泡排序

 1 package com.zhang.算法;
 2 
 3 public class 冒泡排序 {
 4     public static void main(String[] args) {
 5         int[] zhang = new int[]{-100,500,800,100,-200,-900,900,800,-1000,50,50000000,90};
 6 
 7         //控制轮数
 8         for (int i = 0; i <zhang.length-1; i++) {
 9             //控制交换次数  每一轮都少交换一次 所以 zhang.length -1 -i
10             for (int j = 0; j <zhang.length-1-i ; j++) {
11 //                //从小到大
12                 if (zhang[j] > zhang[j+1]){
13                     int temp = zhang[j];
14                    zhang[j] = zhang[j+1];
15                    zhang[j+1] = temp;
16                 }
17                 //从大到小
18 //                if(zhang[j] < zhang[j+1]){
19 //                    int temp = zhang[j];
20 //                    zhang[j] = zhang[j+1];
21 //                    zhang[j+1] = temp;
22 //                }
23             }
24         }
25         for (int i = 0; i < zhang.length; i++) {
26             System.out.println("数组顺序为"+zhang[i]+"\n");
27         }
28         //二分查找
29         int start = 0;
30         int end = zhang.length-1;
31         int data = 900;
32         while (start<=end){
33             //获取中间值
34             int middle = (start + end ) / 2;
35 
36             if ( zhang[middle] > data){
37                 end = middle - 1;
38             }else if (zhang[middle] < data){
39                 start = middle+1;
40             }else if (zhang[middle] == data){
41                 System.out.println("找到了 "+zhang[middle]+"索引为"+middle);
42                 break;
43             }
44         }
45     }
46 }

2.二分查找

package com.zhang.算法;

import javafx.scene.image.Image;

import javax.sound.midi.Soundbank;

public class 二分查找 {

    public static void main(String[] args) {
    // write your code here
        int[] zhang = new int[]{-100,-50,50,600,900,1500,6900,10000};
        //开始位置
        int start = 0;
        //结束位置
        int end = zhang.length-1;
        //查找值
        int data = -100;

        while (start <= end){
            int middle = ( start + end) / 2;
            System.out.println("中间值为" + ":"+zhang[middle]);
            if (zhang[middle] > data){
                end = middle-1;
                System.out.println("中间值索引为" + ":"+middle);
                System.out.println("结束位置值"+end);
            }else if(zhang[middle] < data){
                start =middle+1;
                System.out.println("开始索引为"+start+"结束位置是:"+end+"中间值是:"+zhang[( start + end) / 2]+"索引是"+(start + end) / 2);
//                break;
            }else {
                System.out.println("找到了索引值为:"+middle);
                break;
            }
        }

        
    }
}

 

posted @ 2021-11-25 15:50  takeoff_zy  阅读(15)  评论(0)    收藏  举报