Java二分法查詢與氣泡排序
1、二分法:
在給出的有序排列的陣列中,把目標值和陣列中間值進行比較,如果相等,則返回中間值下標,如果目標值小於中間值,就從數
組的前半段再次執行二分法查詢,如果目標值大於中間值,從陣列的後半段開始二分法查詢。
二分法查詢主要是比較的次數少,查詢的速度快,平均效能好。
例項1:
import java.util.Arrays;
public class BinarySearch {
public static void main(String[] args) {
int[] a = {3,1,4,2,59,5,1};
Arrays.sort(a); //使用二分法查詢,必須先對陣列排序
System.out.println(a); //輸出結果為:[ [email protected]
System.out.println(Arrays.toString(a));//輸出結果為:[1, 1, 2, 3, 4, 5, 59]
System.out.println("該元素的索引為:"+Arrays.binarySearch(a, 3));
}
}
執行結果:
[[email protected] [1, 1, 2, 3, 4, 5, 59] 該元素的索引為:3 |
2、冒泡法排序
package cn.bjsxt.arrays2; import java.util.Arrays; public class MaoPao_PaiXu { public static void main(String[] args) { int[] values = {4,6,1,3,2}; sort(values); System.out.println(Arrays.toString(values)); } public static void sort(int[] values) { int temp; for(int i = 0;i<values.length-1;i++) { for(int j = 0;j<values.length-1-i;j++) { if(values[j]>values[j+1]) { temp = values[j]; values[j] = values[j+1]; values[j+1] = temp; } } } } }
輸出結果為:
[1, 2, 3, 4, 6] |
相關推薦
Java二分法查詢與氣泡排序
1、二分法: 在給出的有序排列的陣列中,把目標值和陣列中間值進行比較,如果相等,則返回中間值下標,如果目標值小於中間值,就從數 組的前半段再次執行二分法查詢,如果目標值大於中間值,從陣列的後半段開始二分法查詢。 二分法查詢主要是比較的次數少,查詢的速度快,平均效能好。
常見的演算法:二分法查詢,氣泡排序和選擇排序
今天主要說一下常見的演算法 ,於是我百度了一下點進那 “ 牛逼 ” 的知乎看了一眼 ,完蛋了 ,這都是些神馬 ??? 我怎麼一個都不會呢 ,我要的可是那種很常見的演算法啊 ,好吧 ,無形中又被深深的傷了一刀 ,好在我迅速調節狀態 。管他呢 ,我就按照自己 low
PHP二分法查詢、快速排序、氣泡排序
二分法查詢: /* 遞迴呼叫實現二分法查詢 //$search 函式 $array為陣列,$K為要找的值,$low為查詢範圍的最小鍵值,$high為查詢範圍的最大鍵值 //intval返回整數值*/ function search($array,$k,$low=0,$high=0){
Java中陣列的補充方法(增強版遍歷、逆序、氣泡排序、二分法查詢)
陣列的補充方法 在《陣列》文章中簡單的介紹了陣列的基本格式和實現案例,此處不做說明,此文主要是補充一些陣列的使用方法。例如:增強版的遍歷、逆序、氣泡排序、二分法查詢。 增強版遍歷: 1.與普通遍歷的區別: 普通的遍歷給人的直觀感覺不是很好,輸出的元素都是排列不好看,所以需
氣泡排序,選擇排序、二分法查詢圖示以及程式碼實現
氣泡排序 請看下面的這個栗子: 需要排序的陣列arr = {99,88,77,55,66,44}; 具體排序細節各位客官請看圖: 程式碼實現: public class BubbleSort { public static void main(String[] ar
java版資料結構與演算法—遞迴(二分法查詢)
package com.zoujc.triangle; /** * 遞迴:二分查詢 */ class OrdArray { private int[] a; private int nElems; public OrdArray(int max){
Java之陣列排序及二分法查詢
首先先介紹兩種最基本的陣列排序方法:冒泡法和選擇法。 冒泡法排序:依次比較相鄰的兩個元素,如果第一個比第二個大,則交換他們兩個,如此一輪比較下來會產生一個最大的數位於陣列末尾,第二次比較則進行到陣列長度-1個元素,以此類推。 /** *
Java 資料結構與算法系列之氣泡排序
一、前言 相信大部分同學都已經學過資料結構與演算法這門課了,並且我們可能都會發現一個現象就是我們所學過的資料結構與演算法類的書籍基本都是使用 C 語言來寫的,好像沒見過使用 Java 寫的資料結構與演算法。 帶著這個好奇心,我去查了下資料,國內基本找不到使用
JAVA實驗二:編碼實現一個類對輸入陣列的數從小到大排序同時使用二分法查詢某一個數(遞迴和非遞迴)
編碼實現一個類 (1)提供一個靜態方法,可以將輸入的一個int[]陣列按照從小到大的順序排列; (2)提供靜態方法,對排好序的陣列使用折半(二分)查詢(使用遞迴和非遞迴兩種形式分別實現)查詢某一個整數。 答案 import java.util.*; public class
js氣泡排序及二分法查詢
JavaScript氣泡排序: var arr = [5,0,-56,90,12]; var flag = false;//標誌位進行優化,陣列本來就是有序序列的話,無需再排序
資料結構與演算法 二分法查詢【Python與C】的實現
程式碼如下: Python: def ErFen(List ,Number ,Len): left = 0 high = Len - 1 while left <= high: mid = (left + high)//2
Java陣列中的選擇排序與氣泡排序
兩種排序的思想 氣泡排序:在首輪,第一項和第二項比較,將大的放在後面,然後比較第二項和第三項,將大的放在後面,以此類推在首輪結束,最大的資料已經在最後一項了。在一輪輪的比較中,後面的已經排好的資料項越來越多,需要排序的資料項越來越少,直到為零。 選擇排序:在氣泡排序上做了優化,減少了交換次數,在首輪選擇最
二分法查詢---java版
比較簡單,直接上程式碼了 package cn.nrsc.algorithm; /** * * @author 孫川 二分查詢就是在一堆已經排好序的陣列中通過折半規則查找出某個數在陣列中的位置 * */ public class BinarySearch { pu
java順序查詢和二分法查詢
1, 順序查詢 2, 二分法查詢 一、順序查詢的基本思想: 從表的一端開始,順序掃描表,依次將掃描到的結點關鍵字和給定值(假定為a)相比較,若當前結點關鍵字與a相等,則查詢成功;若掃描結束後,仍未找到關鍵字等於a的結點,則查詢失敗。 說白了就是,從頭
Java中的陣列實現氣泡排序法
/** * 不使用Arrays的sort方法來排序無規則陣列; * * */ public class MaoPaoDemo { public static void main(String[] args) { int [] arrs = {9,5,8,10,
Java常見演算法之二分法查詢演算法詳解
一、簡介 二分法查詢,是在已經排好序的序列中,定義一個起始位置start(即序列第一個元素)和一個終止位置end(即序列最後一個元素),通過mid=(start+end)/2計算出中間位置,通過待查詢元素與mid中間位置的元素進行比較,如果待查詢元素比中間位置mid對應的值
python中的冒泡、快速、堆排序及二分法查詢
氣泡排序 它重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序(如從大到小、首字母從A到Z)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素已經排序完成。 第一種 def bubble_sort(
【JAVA】二分法查詢指定元素的下標
如果,我們要在一個數組中查詢某個指定的元素,可以使用二分法,從而大大降低查詢效率,前提是所給定的陣列是已經排序的; 下面是一個小小的例子 public class BinarySearch{ publ
二分查詢,氣泡排序
<?php class Test { /** * 二分查詢 -- 要求:陣列必須為已排好序的 * 思路:無限切割即可,注意終止條件 * @param $x int 想要查詢的數字 * @param $arr array 已排好序的陣列
修煉內功---資料結構與演算法14---二分法查詢
所謂二分查詢,針對的是一個有序的資料集合(這點很重要),查詢思想有點類似分治思想。每次都通過跟區間的中間元素對比,將待查詢的區間縮小為之前的一半,直到找到要查詢的元素,或者區間被縮小為 0。注意到二分查詢針對的必須是已經排序過的有序陣列,否則不能使用該演算法。 <?php functio