1. 程式人生 > >PHP 陣列排序(氣泡排序、選擇排序);陣列查詢(順序查詢、二分查詢)

PHP 陣列排序(氣泡排序、選擇排序);陣列查詢(順序查詢、二分查詢)

<?php

header('Content-Type:text/html;charset=utf8');

//二分查詢
//有2個前提:1.陣列已經排好序;2.是連續的索引陣列,即下標為0,1,2,3,4,5...
class Search{

	/**
	*
	* @param arr:已經排好序,而是連續的索引的陣列
	* @param n:查詢的數
	* @param statr:從start位開始查詢
	* @param end:查詢到end位結束		
	*
	* @return 1.查詢數在陣列中的位置 2.false
	*/
	public function twoPointsSearch($arr,$n,$start,$end){

		//如果引數$start>$end,直接返回false
		if($start>$end){
			return false;
		}

		$mid=floor(($start+$end)/2);//返回$start和$end的中間值,如果有小數,捨去小數保留整數
		if($arr[$mid]=$n){
			return $mid;
		}else if ($arr[$mid]>$n) {
			//如果中間值大於需要查詢的值
			$end=$mid-1;
			return self::twoPointsSearch($arr,$n,$start,$end);
		}else{
			//如果中間值小於需要查詢的值
			$start=$mid+1;
			return self::twoPointsSearch($arr,$n,$start,$end);
		}
	}
} 

$arr = array(3,4,5,15,19,21,25,28,30,30,33,38,44,51,52,55,60,77,80,82,83);
$n =33;
$len=count($arr);//count():計算陣列長度

$search=new Search();
$result=$search->twoPointsSearch($arr,$n,0,$len-1);
if ($result===false) {
	echo "沒有找到";
}else{
	echo "{$n}在陣列arr中的位置為:".$result;
}

相關推薦

PHP 陣列排序(氣泡排序選擇排序)陣列查詢(順序查詢二分查詢)

<?php header('Content-Type:text/html;charset=utf8'); //二分查詢 //有2個前提:1.陣列已經排好序;2.是連續的索引陣列,即下標為0,1,2,3,4,5... class Search{ /** * * @param arr:已經排好序

PHP 常見4種排序 氣泡排序選擇排序插入排序快速排序

1、氣泡排序 原理:對一組資料,比較相鄰數的大小,將值大的放到後面。 <?php // 氣泡排序 function bubbleOrder($arr) { $count = count($arr); $temp = 0; // 外層控制排序次數 for ($

Java中陣列氣泡排序選擇排序二分查詢的詳細分析

前言:儘管在實際開發中,我們通過Arrays工具類就可以便利地對陣列進行排序和查詢的操作,但是掌握氣泡排序、選擇排序、二分法查詢的思想對於程式設計來說還是極其重要的,在很多場景都會用到。希望通過這篇部落格的分析能給大家帶來收穫。 主題:陣列的排序和查詢 1、冒泡法排序:

陣列氣泡排序選擇排序

一、一維陣列 程式: 結果: 總結: (1)12行的結果為40:系統會為一個數組分配一段連續的儲存空間。每個資料元素佔用的位元組數,就是基型別的位元組數,一個元素佔4個位元組。int array1[10];由於陣列1是int型的(佔四個位元組),而且陣列1裡有

氣泡排序選擇排序快速排序法三者的效率對比,包括陣列的儲存與載入

排序演算法: // 冒泡 void sorta(int array[], int n) { for (int i = 0; i < n; i++) { for (int t = i + 1; t < n; t++) { if (array[

陣列排序氣泡排序快速排序選擇排序

在工作中遇到了排序問題,隨後就總了了幾種排序方式【氣泡排序、快速排序、選擇排序】 【氣泡排序】   原理:比較相鄰的兩個元素,將值大的交換至右側 // 氣泡排序:比較相鄰的兩個元素,將值大的交換至右邊 var arr = [1,20,5,62,8,2,45]; fu

java實現陣列氣泡排序選擇排序程式碼

陣列排序之氣泡排序: 相鄰元素兩兩比較,大的往後放,第一次完畢,最大值出現在了最大索引處 package cn.lgt.sortarray; public class MaoPaoSort {

一維陣列常見的三種排序氣泡排序選擇排序插入排序Arrays內建排序

一維陣列的 氣泡排序 選擇排序 插入排序 Arrays內建排序 package arithmetic; import java.util.Arrays; /** * 一維陣列的排序 * 氣泡排序 * 選擇排序 * 插

Java學習路程之陣列排序(氣泡排序選擇排序折半查詢)

一.陣列 1.一維陣列:儲存一組相同資料型別的元素. 2.陣列的三種宣告方式 array為陣列的命名 資料型別表示的是陣列中元素的資料型別 int[] array = new int[陣列長度]; int[] array =

Java-陣列排序氣泡排序選擇排序折半查詢

氣泡排序 核心思想:相鄰兩個數比較大小,然後換位 public static void main(String[] args) { int[] name = new int[] {12,5

PHP冒泡排序選擇排序插入排序

while blog div clas HP 下標 位置 設置 所在 $arr = [1, 8, 7, 5, 4, 2, 11, 9, 20]; 冒泡排序: for ($i = 0; $i < count($arr); $i ++) { for ($j =

氣泡排序選擇排序二分查詢插入排序

氣泡排序、選擇排序、二分查詢、插入排序 氣泡排序   氣泡排序的思想就是兩兩比較,按從小到大輸出的話,兩個值相比,較小的放前大的放後,那麼第一次兩兩比較結束後,最大值放在末尾,接下來再繼續兩兩比較,但是這一次不需要比較到最後,因為最後已經是最大值了,所以每次兩兩比較結束後,都會少比一次,

java之氣泡排序選擇排序快速排序插入排序java8排序

package cn.com.javatest.sort; import org.apache.commons.lang3.StringUtils; /** * 常用排序方法 * * @author: Rodge * @time: 2018年10月4日 下午5:16:22 * @ve

排序演算法(直接插入氣泡排序選擇排序快速排序希爾排序排序歸併排序

main函式 int main() { int data[] = {1,2,6,3,4,7,7,9,8,5}; //bubble_sort(data,10); //select_sort(data,10); Insert_Sort(data,10); fo

《資料結構與演算法》之排序演算法(氣泡排序選擇排序

排序(Sorting) 是計算機程式設計中的一種重要操作,它的功能是將一個數據元素(或記錄)的任意序列,重新排列成一個關鍵字有序的序列。 排序演算法分類: 一、非線性時間比較類排序 1、交換排序(氣泡排序、快速排序) 2、插入排序(簡單插入排序、布林排序) 3、選擇排序(簡單選擇

氣泡排序選擇排序插入排序快速排序演算法耗時測試

import java.util.*; public class Test1 { public static void main(String[] args) throws Exception{ int[] arr1=new int[20000]; for(int i=0;i&l

Python三種排序演算法的執行速度對比(快速排序氣泡排序選擇排序)

最近看了一下快速排序演算法,據說速度比其他的排序演算法快,於是寫了三個排序演算法對比一下,分別是氣泡排序,快速排序,選擇排序,以下是三個排序演算法的程式碼: 氣泡排序   BubbleSort.py # -*- coding:utf8 -*- def Sort(list

資料結構--氣泡排序歸併排序快速排序選擇排序插入排序(Java版)

一、氣泡排序 1、思路 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。 針對所有的元素重複以上的步驟,直到沒有任何一對元素需要比較。 2、實現 /** * 排序演算法的介面 * @author hoaven */ pu

小川學習筆記--JAVA一個類實現多種排序氣泡排序快速排序選擇排序插值排序

JAVA氣泡排序、快速排序、選擇排序、插值排序 作者:程式猿劉小川 public static void main(String[] args) //主程式 { int data[] = {5,7,1,0,2,3,4,66,9,8};

《C語言》氣泡排序快速排序選擇排序排序排序插入排序

氣泡排序、快速排序、選擇排序、堆排序、桶排序、插入排序。 Main.c MySort.h MySort.c Main.c #include <time.h> #include "MySort.h" #define N 10