python二分排序演算法
二分排序:二分排序是指利用二分法的思想對插入排序進行改進的一種插入排序演算法,不同於二叉排序,可以利用陣列的特點快速定位指定索引的元素。
二分排序演算法只對於事先排好序的演算法有效故在使用二分排序演算法之前要對樣本序列進行排序
排序後,開始進行二分查詢:
設定倆個標誌位:start和stop,取二者平均值和查詢數字進行比較,如果可以查到則有以下三種結果:
(1)mid所在位置數字大於待查詢數字,說明待查詢數字在左邊。移動stop指向,修改mid的值
(2)mid所在位置數字小於待查詢數字,說明待查詢數字在右邊。移動start指向,修改mid的值
(3)mid所在位置數字等於待查詢數字,則輸出該數字在樣本序列中的位置
若查詢無果,使用者也要輸出相應的提示資訊
程式碼實現:
相關推薦
python二分排序演算法
二分排序:二分排序是指利用二分法的思想對插入排序進行改進的一種插入排序演算法,不同於二叉排序,可以利用陣列的特點快速定位指定索引的元素。二分排序演算法只對於事先排好序的演算法有效故在使用二分排序演算法之
【演算法 in python】排序演算法
1. 氣泡排序 def bubbleSort(arr): for i in range(len(arr)-1): for j in range(len(arr)-1-i): if arr[j] > a
兩種方法實現Python二分查詢演算法 兩種方法實現Python二分查詢演算法
兩種方法實現Python二分查詢演算法 一. ? 1 2
python二分法演算法
// python二分法演算法 def binary_search(list,item): //列表list中搜索item元素 low = 0 high = len(list) - 1 while low < item: mid =
python的排序演算法
選擇排序 選擇排序,搜尋整個列表,找到最小項的位置,如果該位置不是列表的第一個位置,也就是索引為零,演算法就會交換著兩個位置的項。然後,演算法回到第二個位置並且重複這個過程。 def selectionSort(alist): i = 0 whil
python氣泡排序演算法
氣泡排序 氣泡排序:暫且規定:排序好的順序是從小到大。 顧名思義,冒泡冒泡,就像燒水一樣,剛開始涼水的時候,看著很平靜, 當燒到一定溫度後,就會有小水泡從下邊冒上來。 氣泡排序演算法就是根據兩兩比較,如果這個數比和它比較的數大,那麼他倆交換位置, 繼續和下一個數
關於冒泡、快排、二分排序演算法分析
前面的話: 把自己總結的排序方法分享一下,也當作自己的筆記本了 冒泡: 氣泡排序演算法的主要思想是每次只比較相鄰的兩個元素,一輪排序之後,最大的元素就會沉到最下面(全文預設升序),然後每次迴圈比較,就可以得到一個已排序好的陣列。 程式碼實現: public static void
Python學習——排序演算法實現
文章目錄 時間複雜度 空間複雜度 二分查詢 氣泡排序 選擇排序 插入排序 快速排序 歸併排序 計數排序 一直以來,我只是在大學學過C語言的資料結構中關於氣泡排序的演算法,到現在這麼多年也沒有學習過其它演算法,
Python快速排序演算法
# -*- coding: utf-8 -*- # 快速排序演算法 import random fenshu = int(input("請輸入考試滿分:")); renshu = int(input(
Python八大排序演算法
1.插入排序:插入排序的基本操作就是將一個數據插入到已經排好序的有序資料中,從而得到一個新的、個數加一的有序資料,演算法適用於少量資料的排序;首先將第一個作為已經排好序的,然後每次從後的取出插入到前面並排序;時間複雜度:O(n²)空間複雜度:O(1)穩定性:穩定def ins
python常見排序演算法的實現(一)
在Python程式設計的實踐中,我們往往會遇到排序問題,比如在對搜尋引擎搜尋結果的排序(沒有排序就沒有Google、baidu等搜尋引擎的存在),當然,這樣的例子數不勝數。我大學中的必修課程《資料結構》
Java二分排序演算法簡易版(原創)
以下是二分排序的Java程式碼,排序的圖片抽空我再發上去package algorithm; import java.util.Arrays; /** * @author shany */ public class SY_erfen { // 因為int型陣列是常
python常用排序演算法
一 氣泡排序 遍歷列表,比較相鄰的兩個元素的大小,如果第一個數小於第二個數繼續移動,否則交換兩個元素的位置 。 時間複雜度:平均:O(n²),最好:O(n),最壞:O(n2),穩定性:穩定。 # coding=utf-8 def bubbling
經典排序演算法,氣泡排序,選擇排序,直接插入排序,希爾排序,快速排序,歸併排序,二分查詢。原理及python實現。
1.氣泡排序 氣泡排序 1.比較相鄰的元素,如果第一個比第二個大(升序),就交換他們兩個 2.對每一對相鄰的元素做同樣的工作,從開始到結尾的最後一對 這步做完後,最後的元素會是最大的數 3.針對所有的元素重複以上的步驟,除了最
(排序演算法)linux c語言實現二分插入排序演算法(簡化版本的插入排序演算法)
二分插入演算法是在已經排序好的序列裡插入一個元素,是穩定的演算法,關鍵詞是折中。 比如說我要在12345678910裡插入一個3,那麼我先看看中間的數比3大,還是比3小,要是比3大,我就去後一半,如果是比3小,我就去前一半,現在進入某個一半後,再做如此操作,最後將其他的元素依次往後挪
Python的8大排序演算法
本文用Python實現了插入排序、希爾排序、氣泡排序、快速排序、直接選擇排序、堆排序、歸併排序、基數排序。 1、插入排序 描述 插入排序的基本操作就是將一個數據插入到已經排好序的有序資料中,從而得到一個新的、個數加一的有序資料,演算法適用於少量資料的排序,時間複雜度為O(n^2)。是穩定
python實現的八種排序演算法
1.快速排序 排序思想: 1.從數列中挑出一個元素,稱為"基準"(pivot) 2.重新排序數列,所有比基準值小的元素放在基準前面,比基準大的元素放在基準後面。在這個分割槽結束之後,該基準就處於數列的中間位置,這就是分割槽操作。 3.遞迴地把小於基準的子數列和大於基準的子數列排序
用python編寫二分查詢演算法
二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好;其缺點:是要求待查表為有序表,且插入刪除困難。使用場景:不經常變動而查詢頻繁的有序列表。 思想: 首先,假設表中元素是按升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較, 如果兩者相等,則查詢成功;否則利用中間位置
python之路——二分查詢演算法
楔子 如果有這樣一個列表,讓你從這個列表中找到66的位置,你要怎麼做? l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] 你說,so easy! l.index(66)... 我
Python三種排序演算法的執行速度對比(快速排序、氣泡排序、選擇排序)
最近看了一下快速排序演算法,據說速度比其他的排序演算法快,於是寫了三個排序演算法對比一下,分別是氣泡排序,快速排序,選擇排序,以下是三個排序演算法的程式碼: 氣泡排序 BubbleSort.py # -*- coding:utf8 -*- def Sort(list