PHP插入排序

本意是想研究一下希爾排序的,因為希爾排序和快速排序沒有爭議的是排序最快的兩種算法,但無奈希爾排序是以插入排序為基礎的,所以只得先研究一下插入排序.

?

插入排序基本思想:

?

插入排序(Insertion Sort)的基本思想是:每次將一個待排序的記錄,按其關鍵字大小插入到前面已經排好序的數據序列的適當位置,直到全部記錄插入完成為止。

假設待排序的記錄存放在數組R[0…n-1]中。初始時,R[0]自成1個有序區,無序區為R[1…n-1]。從i=1起直至i= n-1為止,依次將R[i]插入當前的有序區R[0…i-1]中,生成含n個記錄的有序區。通常將一個記錄R[i](i=1,2,…,n-1)插入到當前的有序區,使得插入后仍保證該區間里的記錄是按關鍵字有序的操作稱第i趟插入排序。排序過程的某一中間時刻,R被劃分成兩個子區間R[0…i-1](已排好序的有序區)和[i…n-1](當前未排序的部分,可稱無序區)。插入排序的基本操作是將當前無序區的第1個記錄R[0]插人到有序區R[0…i-1]中適當的位置上,使 R[0…i]變為新的有序區。因為這種方法每次使有序區增加1個記錄,通常稱增量法。
?

?

排序示意圖:

?

?

?

代碼實現 :

?

//插入排序
function insertSort($arr)
{$count = count($arr);for ($i = 1; $i < $count; $i++){$temp = $arr[$i];//設置哨兵for ($j = $i-1; $j >= 0; $j--){if($arr[$j] > $temp){$arr[$j+1] = $arr[$j];$arr[$j] = $temp;}}} return $arr;
}$arr = array(70,30,40,10,80,20,90,100,75,60,45);
var_dump(insertSort($arr));

?

結果:

array (size=11)0 =>  101 =>  202 =>  303 =>  404 =>  455 =>  606 =>  707 =>  758 =>  809 =>  9010 =>  100 (size=11)0 =>  101 =>  202 =>  303 =>  404 =>  455 =>  606 =>  707 =>  758 =>  809 =>  9010 =>  100

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282648.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282648.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282648.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用Stepping.NET輕松執行多步原子操作

Stepping 是一個基于 BASE 的分布式作業實現。它可以作為工作流引擎&#xff0c;事件收/發件箱&#xff0c;用于郵箱/短信發送&#xff0c;用于遠程接口調用等場景。Stepping 中 Job 和 Step 是什么?Job 是一個分布式事務單元&#xff0c;而 Step 是 job 中一個特定的任務。一…

JSP+JavaBean+Servlet技術(MVC模型)

一&#xff0c;Servlet開發用戶在瀏覽器中輸入一個網址并回車&#xff0c;瀏覽器會向服務器發送一個HTTP請求。服務器端程序接受這個請求&#xff0c;并對請求進行處理&#xff0c;然后發送一個回應。瀏覽器收到回應&#xff0c;再把回應的內容顯示出來。這種請求—響應模式就是…

ora-01591:鎖被未分布式事物處理/Distrib tran

伴隨報錯內容&#xff1a;Distrib tran xxx.xxx.xx.x.xxxx 1、使用Oracle DBA用戶&#xff0c;查詢如下數據字典&#xff1a;select * from dba_2pc_pending2、強制Rollback或者Commit該事務&#xff1a;select commit force || local_tran_id||; from dba_2pc_pending…

bzoj2721 [Violet 5]櫻花

分析&#xff1a;這道題對于我這種蒟蒻來說還是很有難度啊。 思路非常巧妙&#xff0c;既然不定方程要有有限個數解&#xff0c;那么這個肯定會對解有所限制&#xff0c;也就是本題中的正整數.這個時候我們要表示出方程中的一個根x,設z n!,那么xyz/(y-z),這樣的話不能得到答案…

ipados 文件 連接服務器,iPadOS更新指南,總有一個功能是你需要的

近期&#xff0c;蘋果向部分ipad用戶推送了iPadOS系統&#xff0c;據系統介紹&#xff0c;這是一款強大的操作系統&#xff0c;更能體現iPad的獨特之處。iPadOS與IOS同源&#xff0c;針對iPad的大顯示屏和多功能增加了全新和直觀的強大功能。剛才小編給大家提到了部分iPad用戶&…

Angular 2.x 從0到1 (五)史上最簡單的Angular2教程

第一節&#xff1a;Angular 2.0 從0到1 &#xff08;一&#xff09;第二節&#xff1a;Angular 2.0 從0到1 &#xff08;二&#xff09;第三節&#xff1a;Angular 2.0 從0到1 &#xff08;三&#xff09;第四節&#xff1a;Angular 2.0 從0到1 &#xff08;四&#xff09;第五…

《大道至簡》讀后感

所謂的大道至簡就是說大道理&#xff08;基本原理&#xff0c;方法和規律&#xff09;是極其簡單的&#xff0c;簡單到一兩句話就能說明白。所謂“真傳一句話&#xff0c;假傳萬卷書”。這也許也是這本書只有一百多頁的原因吧。 說實話&#xff0c;《大道至簡》這部作品對現在有…

ajax 分頁 評論刷新,評論:js無刷新分頁(原創)

繁華落盡02020/4/28 0:26:00大佬&#xff0c;教一下怎么用&#xff0c;以前我是直接在按鈕上綁個路徑。首頁上一頁${i}${i}下一頁尾頁漫走32020/4/28 20:43:32后臺的方法需要的參數&#xff1a;當前頁、每頁顯示條數&#xff0c;插件都給你控制好了&#xff0c;你直接用就行。e…

MariaDB基礎(二)

MariaDB基礎(二)介紹關于MariaDB的如下知識點&#xff1a;1. 查詢緩存2. 索引3. EXPLAIN1.查詢緩存&#xff1a;1&#xff09;什么是緩存&#xff1f;緩存就是數據交換的緩沖區&#xff0c;即Cache&#xff0c;存放在內存中&#xff1b;2&#xff09;查詢緩存的數據以何種形式存…

設計模式——享元模式具體解釋

0. 前言寫在最前面&#xff0c;本人的設計模式類博文&#xff0c;建議先看博文前半部分的理論介紹。再看后半部分的實例分析。最后再返回來復習一遍理論介紹&#xff0c;這時候你就會發現我在重點處標紅的用心&#xff0c;對于幫助你理解設計模式有奇效哦~本文原創。轉載請注明…

OpenStack Nova計算服務管理(四)

作者&#xff1a;李曉輝聯系方式: Xiaohui_lifoxmail.com環境介紹類型控制節點和計算節點等在一起&#xff0c;形成all-in-one內存8G硬盤200G網卡2塊計算服務概覽使用OpenStack計算服務來托管和管理云計算系統。OpenStack計算服務是基礎設施即服務(IaaS)系統的主要部分&#xf…

miui替換官方文件解決無服務器,miui 關掉云服務器

miui 關掉云服務器 內容精選換一換本節操作介紹Linux云服務器切換密鑰登錄為密碼登錄的操作步驟。使用密鑰登錄Linux云服務器&#xff0c;設置root密碼。sudo passwd root若密鑰文件丟失或損壞&#xff0c;請參考Linux云服務器如何進入單用戶模式重置root密碼&#xff0c;重置r…

PHP-高并發和大流量的解決方案

一 高并發的概念 在互聯網時代&#xff0c;并發&#xff0c;高并發通常是指并發訪問。也就是在某個時間點&#xff0c;有多少個訪問同時到來。 二 高并發架構相關概念 1、QPS (每秒查詢率) : 每秒鐘請求或者查詢的數量&#xff0c;在互聯網領域&#xff0c;指每秒響應請求數…

原型

2019獨角獸企業重金招聘Python工程師標準>>> 什么是原型&#xff1a; 對象與對象之間的關系 轉載于:https://my.oschina.net/u/2285087/blog/854377

JavaScript中數組slice和splice的對比小結

前言 今天重溫了一下Javascript&#xff0c;看到了數組的方法&#xff0c;其中有兩個比較相似的方法——splice和splice&#xff0c;看著很像&#xff0c;就是多了一個p&#xff0c;但是用法卻相當不一樣。 在使用中&#xff0c;可以通過選擇一個具有強語義表達性的 API 來減少…

存儲服務器的操作系統,存儲服務器是什么操作系統

存儲服務器是什么操作系統 內容精選換一換鏡像服務提供了私有鏡像的全生命周期管理能力&#xff0c;主要包括創建私有鏡像&#xff0c;復制、共享或導出私有鏡像等操作&#xff0c;您可以根據實際場景選擇合適的方法&#xff0c;并結合彈性云服務器、對象存儲等周邊服務完成業務…

優化--減少HTTP請求

一、 圖片地圖 (將幾張圖片合為一張,根據用戶點擊的位置發送不同請求,減少了圖片的請求數量) 案例所在位置:http://stevesouders.com/hpws/imagemap.php 二、css精靈(和圖片地圖功能相似,都是將幾張圖片合并在一起,根據位置發送不同請求) 這里不做具體使用介紹,百度有此方面內…

軟件負載均衡

一、軟件負載均衡概述 硬件負載均衡性能優越&#xff0c;功能全面&#xff0c;但是價格昂貴&#xff0c;一般適合初期或者土豪級公司長期使用。因此軟件負載均衡在互聯網領域大量使用。常用的軟件負載均衡軟件有Nginx&#xff0c;Lvs&#xff0c;HaProxy等。本文參考大量文檔&a…

JAVA多線程之先行發生原則

一、引子   如果java內存模型中所有的有序性都僅僅依靠volatile和synchronized來完成&#xff0c;那么有一些操作會變得很繁瑣&#xff0c;但我們在編寫java并發代碼時并未感覺到這一點&#xff0c;這是因為java語言中有個先行發生原則&#xff08;happens-before&#xff09…

git工具 將源碼clone到本地指定目錄的三種方式

git工具 將源碼clone到本地指定目錄的三種方式 CreationTime--2018年7月27日15點34分 Author:Marydon 1.情景展示 運行git-bash.exe&#xff0c;輸入命令&#xff1a;git clone 下載源碼地址-->回車&#xff0c;結果發現項目被下載到了&#xff0c;git工具的安裝目錄下 如何…