1、冒泡排序
int[] arr = {8, 4, 5, 3, 9}; //一共5个元素 int temp; for(int i=0;i<arr.length-1;i++){ //外循环-共比较了4次 for(int j=0;j<arr.length-1;j++){//内循环-每次两两比较了4次 //若前一项>后一项,则交换两项位置 if(arr[j]>arr[j+1]){ temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } } }public static void maoPaoSort(int[] arr){ //冒泡排序 for(int i = 0; i < arr.length; i++){ for(int j = 0; j < arr.length-1-i; j++){ if(arr[j] > arr[j+1]){ int temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } printArray(arr);//打印数组 }
2、二分查找
二分查找的前提:数组必须有序
public static void main(String[] args) { int[]arr={0,1,5,8,9,7,1,5}; int res= searchLoop(arr,5); System.out.println(res); }//二分查找 public static int searchLoop(int[]a,int target) { int left = 0; int right = a.length - 1; while (left <= right) { int mid = (left + right) / 2; //找到区间中间值 if (a[mid] == target) { //与中值相等——直接返回 return mid; } else if (a[mid] < target) { //大于中值——在右边区间查找 left = mid + 1; } else { //小于中值——在左边区间查找 right = mid - 1; } } return -1; //都不满足——返回-1 }
3、选择排序
//选择排序 public static void xuanZeSort(int[] arr){ for(int i = 0; i < arr.length; i++){ for(int j = i+1; j< arr.length; j++){ if(arr[i] > arr[j]){ int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } } } printArray(arr); }
4、数组逆序
int[] arr = {321,41,12,1,2,4,10,5}; int temp; //方法一 for(int index=0;index<arr.length/2;index++){ temp=arr[index]; arr[index]=arr[arr.length-1-index]; arr[arr.length-1-index]=temp; } //方法二:指针改进 for(int start=0,end=arr.length-1; start<=end; start++,end--){ temp=arr[start]; arr[start]=arr[end]; arr[end]=temp; }
5、打印数组
public static void printArray(int[] arr) { System.out.print("["); for (int i = 0; i < arr.length; i++) { if (i != arr.length - 1) { System.out.print(arr[i] + ", "); } else { System.out.print(arr[i]); } } System.out.println("]"); }