第三次学JAVA再学不好就吃翔(part59)--冒泡排序选择排序以及二分查找
生活随笔
收集整理的這篇文章主要介紹了
第三次学JAVA再学不好就吃翔(part59)--冒泡排序选择排序以及二分查找
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
學習筆記,僅供參考
文章目錄
- 數組高級冒泡排序
- 數組高級選擇排序
- 二分查找法
數組高級冒泡排序
冒泡排序原理:設數組中有n個元素,從第一個元素開始,對相鄰元素進行兩兩比較,兩個元素中大的往后放,第一次排序完畢后,最大值將出現在索引n-1處,第二次排序完畢后,第2大的值出現索引n-2處,…,在以此類推,直到第n-1次排序后,所有元素都會從小到大排序。
代碼:
package com.guiyang.restudy3;public class D1Array {public static void main(String[] args) {int[] arr = {24, 69, 80, 57, 13};bubbleSort(arr);print(arr);}private static void print(int[] arr) {for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}}private static void bubbleSort(int[] arr) {for (int i = 0; i < arr.length - 1; i++) { //外循環只需要比較arr.length-1次就可以了for (int j = 0; j < arr.length - 1 - i; j++) { //-1為了防止索引越界,-i為了提高效率if(arr[j] > arr[j+1]) {swap(arr,j,j+1);}}} }private static void swap(int[] arr, int j, int i) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}輸出:
13 24 57 69 80數組高級選擇排序
選擇排序原理:設數組中有n個元素,用0索引上的元素依次與其他索引位置上的元素比較,小的放在前面,大的放在后面,第一次排序后,最小值出現在0索引上,第二次排序后,第2小的值出現在1索引上,…,在以此類推,直到第n-1次排序后,所有元素都會從小到大排序。
代碼:
package com.guiyang.restudy3;public class D1Array {public static void main(String[] args) {int[] arr = {24, 69, 80, 57, 13};selectSort(arr);print(arr);}private static void selectSort(int[] arr) {for (int i = 0; i < arr.length - 1; i++) { //只需要比較arr.length-1次for (int j = i + 1; j < arr.length; j++) {if(arr[i] > arr[j]) {swap(arr,i,j);}}}}private static void print(int[] arr) {for (int i = 0; i < arr.length; i++) {System.out.print(arr[i] + " ");}}private static void swap(int[] arr, int j, int i) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}輸出:
13 24 57 69 80二分查找法
二分查找法原理部分
代碼:
package com.guiyang.restudy3;public class D2Array {public static void main(String[] args) {int[] arr = {11,22,33,44,55,66,77};System.out.println(getIndex(arr, 22));System.out.println(getIndex(arr, 66));System.out.println(getIndex(arr, 88));}private static int getIndex(int[] arr, int value) {int min = 0;int max = arr.length - 1;int mid = (min + max) / 2;while(arr[mid] != value) { //當中間值不等于要找的值,就開始循環查找if(arr[mid] < value) { //當中間值小于了要找的值min = mid + 1; //最小的索引改變}else if (arr[mid] > value){ //當中間值大于了要找的值max = mid - 1; //最大的索引改變}mid = (min + max) / 2; //無論最大還是最小改變,中間索引都會隨之改變if(min > max) { //如果最小索引大于了最大索引,就沒有查找的可能性了return -1; //返回-1}}return mid;}}輸出:
1 5 -1總結
以上是生活随笔為你收集整理的第三次学JAVA再学不好就吃翔(part59)--冒泡排序选择排序以及二分查找的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 诗经两首关雎蒹葭教案一等奖
- 下一篇: 20个设计师必备工具推荐