冒泡排序
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 }