首页 > 代码库 > 冒泡排序

冒泡排序

冒泡排序

 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                 if(min>max){
15                     System.out.println("没找到");
16                     break;
17                 }
18             }else if(target<arr[middle]){
19                 max=middle-1;
20                 middle=(max+min)/2;
21                 if(min>max){
22                     System.out.println("没找到");
23                     break;
24                 }
25             }else{
26                 System.out.println(middle);
27                 break;
28             }
29         }
30 
31     }
32 }

 

冒泡排序