• 冒泡排序_选择排序_二分法


    冒泡排序

     1 package com.java.paixu;
     2 
     3 /**
     4  * 冒泡排序:相邻的两个元素相比较,符合条件交换位置
     5  * @author syousetu
     6  *
     7  */
     8 public class maopao {
     9     public static void main(String[] args) {
    10         int[]arr={5,6,4,1,23,5};
    11         for (int i = 0; i < arr.length-1; i++) {
    12             for (int j = 0; j < arr.length-1-i; j++) {
    13                 
    14                 if(arr[j]>arr[j+1]){
    15                     int temp=arr[j];
    16                     arr[j]=arr[j+1];
    17                     arr[j+1]=temp;
    18                 }
    19                 
    20                 
    21             }
    22         }
    23         
    24         for (int i : arr) {
    25             System.out.println(i);
    26         }
    27         
    28     }
    29 }

    选择排序

     1 package com.java.paixu;
     2 
     3 public class xuanze {
     4     public static void main(String[] args) {
     5         int []arr={5,7,8,5,2,3,6,4};
     6         for (int i = 0; i < arr.length-1; i++) {
     7             for (int j = i; j < arr.length; j++) {
     8                 if(arr[i]<arr[j]){
     9                     int temp =arr[i];
    10                     arr[i]=arr[j];
    11                     arr[j]=temp;
    12                 }
    13             }
    14         }
    15         
    16         for (int i : arr) {
    17             System.out.println(i);
    18         }
    19         
    20     }
    21 }

    折半查找法使用的前提是查找的数据是必须有序的

    思路:

      定义三个变量记录最大,最小、中间的查找范围索引值,每次都是使用中间索引值与目标进行对比,如何不是符合的目标那么就缩小查找的范围

     1 package com.java.paixu;
     2 
     3 public class erfenfa {
     4     public static void main(String[] args) {
     5         int[]arr={1,5,9,45,68,98,156};
     6         int min=0;
     7         int max=arr.length-1;
     8         int middle=(min+max)/2;
     9         int target=156;
    10         while(true){
    11             if(target>arr[middle]){
    12                 min=middle+1;
    13                 middle=(max+min)/2;
    14               18             }else if(target<arr[middle]){
    19                 max=middle-1;
    20                 middle=(max+min)/2;
    21                 25             }else{
    26                 System.out.println(middle);
    27                 break;
    28             }
    29 } 30 31 } 32 }
  • 相关阅读:
    暴力枚举 --- 多方法求解
    图论 --- 骑士周游问题,DFS
    数论 --- 同余定理
    数论 --- 筛法求素数进一步优化
    求大素数
    codeforces --- Round #244 (Div. 2) B. Prison Transfer
    codeforces --- Round #244 (Div. 2) A. Police Recruits
    线段树 --- (区间维护+逆推)
    线段数 --- (单点更新、求逆序对)
    线段树 --- (单点更新、区间求和、模板题)
  • 原文地址:https://www.cnblogs.com/syousetu/p/6516945.html
Copyright © 2020-2023  润新知