排序演算法---簡單插入排序(Simple insertion sort)
簡單插入排序是由n-1趟排序組成,簡單來說,就是假定一個長度為n的陣列,把第0位作為起始位,並認為有序(只有一個元素嘛),然後遍歷從1到n-1下標的元素,每次遍歷一個進行一次排序,直到n-1趟排序完成,這個排序的演算法複雜度最優的情況下,為O(n),最壞的情況下還是O(n的平方);
程式碼如下:
void InsertionSort(int a[]) { int j; int size=sizeof(a)/sizeof(int); for(int i=1;i<size;i++) {//預設認為第一個有序 if(a[i]<a[i-1]) {//這時候要交換位置 int temp=a[i]; for(j=i-1;j>=0 && temp<a[j];j--) {//符合條件,要修改值,因為插入了一個值,之前的序列會受到影響,往後推移 a[j+1]=a[j]; } //最後不滿足了,此時的位置就是要插入的位置 a[j+1]=temp; } } }
相關推薦
排序演算法---簡單插入排序(Simple insertion sort)
簡單插入排序是由n-1趟排序組成,簡單來說,就是假定一個長度為n的陣列,把第0位作為起始位,並認為有序(只有一個元素嘛),然後遍歷從1到n-1下標的元素,每次遍歷一個進行一次排序,直到n-1趟排序完成,這個排序的演算法複雜度最優的情況下,為O(n),最壞的情況下還是O(n的平方); 程式碼如
排序演算法(三):簡單選擇排序(Simple Selection Sort)
基本思想: 在要排序的一組數中,選出最小(或者最大)的一個數與第1個位置的數交換;然後在剩下的數當中再找最小(或者最大)的與第2個位置的數交換,依次類推,直到第n-1個元素(倒數第二個數)和第n個元素(最後一個數)比較為止。 簡單選擇排序的示例: 操作方法: 第一趟,從n
十大經典排序演算法之插入排序(Insertion Sort)
插入排序(Insertion-Sort)的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃描,找到相應位置並插入。插入排序在實現上,通常採用in-place排序(即只需用到O(1)的額外空間的排序),因而在從後向前掃描過程中,需要反覆
排序演算法(5)- 折半插入排序(Binary Insertion Sort)
原理 插入排序演算法的優化演算法 排序演算法是和已排序佇列按順序一一比較,然後交換位置,直到找出插入位置。折半插入排序演算法是先適用折半查詢找出插入位置,然後統一後移。 注意點 時間複
直接插入排序(Straight Insertion Sort)
temp wap 序表 maxsize 得到 進行 efi size 長度 直接插入排序(Straight Insertion Sort)的基本操作是將一個記錄插入到已經排好序的有序表中,從而得到一個新的、記錄數增1的有序表。 /* 對順序表L作直接插入排序 */ v
排序演算法之插入排序(直接插入、希爾排序)
前言 一個好的排序演算法對於程式的優化會有很大的提升,雖然在許多語言的類庫中就存在了N種排序方法,但是隻有在瞭解了每一種排序演算法後才能更好的在實際中運用這些演算法。這裡我主要說明插入排序中的直接插入以及希爾排序的實現。 直接插入 直接插入排序是最簡單的排序演算法之一。對於直
排序演算法之插入排序(關鍵詞:資料結構/演算法/排序演算法/插入排序)
假定:有 1 個亂序的數列 nums ,其中有 n 個數。 要求:排好序之後是 從小到大 的順序。 插入排序演算法 程式碼 def insert_sort(nums): i = 1 n = len(nums) while i <= n-1: j = i
九大排序演算法之插入排序(原理及實現)
1、演算法思路:每趟將一個待排序的元素作為關鍵字,按照其關鍵字值得大小插入到已經排好的部分的適當位置上,知道插入完成。 2、演算法過程 舉個栗子(第一趟的排序過程) 原始序列:49、38、65、97、76、13、27、49 1)開始以第一個元素49為關鍵字,看成一個序列,其餘數看成另
直接插入排序(Straight Insertion Sort)- java實現
學習自嚴蔚敏、吳偉民的《資料結構》-清華大學出版 最簡單的排序方法。基本操作是將一個記錄插入到已排序好的有序表中,從而得到一個新的、記錄數增1的有序表。 先看程式碼: public static int[] insertSort(int[] arr) { for
折半插入排序(Binary Insertion Sort)- java實現
學習自嚴蔚敏、吳偉民的《資料結構》-清華大學出版 在上一篇有關直接插入排序中,當待排序記錄的數量n很小時,這是一種很好的排序方法。但是,通常待排序的序列中的記錄數量n很大,則不宜採用直接插入排序。為此,在此基礎上,從減少“比較”、“移動”這兩種操作的次數著眼,可以使用
排序演算法之 插入排序、希爾(shell)排序 及其時間複雜度和空間複雜度
有一個已經有序的資料序列,要求在這個已經排好的資料序列中插入一個數,但要求插入後此資料序列仍然有序,這個時候就要用到一種新的排序方法——插入排序插入排序的基本操作就是將一個數據插入到已經排好序的有序資料中,從而得到一個新的、個數加一的有序資料,演算法適用於少
003.選擇排序—簡單選擇排序(Simple Selection Sort)
#include <stdlib.h>#include <stdio.h>#define aray_num 10void printfArray(int list[]){ int i; for(i=0; i<aray_num-1; i++) {
簡單選擇排序(simple Selection Sort)
演算法思想:每一趟從待排序的記錄中選出關鍵字的最小記錄,按照順序放在已排序的記錄序列的最後,直到全部排完。 時間複雜度:O(n^2)–兩層迴圈,並沒有優化的方法。 空間複雜度:O(1)—–記錄交換時候需要一個輔助空間 演算法特點:穩定性可以控制。可以用鏈式
c#程式碼實現排序演算法之插入排序
插入排序的平均時間複雜度為O(n²),最好時間複雜度為O(n),最壞時間複雜度為O(n²),空間複雜度為O(1),是一種穩定的演算法。 1.將整個待排序的記錄序列劃分成有序區和無序區,初始時有序區為待排序記錄序列的第一個記錄,無序區包括所有剩餘待排序的記錄。 2.將無序區的第一個
排序演算法1--插入排序
插入排序思想:每一步將一個待排序的元素,按期排序碼的大小,插入到前面已經排好序的一組元素的合適位置上去,知道元素插完。 插入排序分為直接插入排序,和優化後的二分插入排序,我們先看第一種; 直接插入排序 基本思想:當我們插入第i(i>=1)個元素時,前面的所有元素已經
小甲魚 排序演算法 直接插入排序
小甲魚 排序演算法 直接插入排序 在這之間排序演算法的時間複雜度是O(n2),希爾排序突破了O(n*logn) 直接插入排序演算法(Straight Insertion Sort)的基本操作是將一個記錄插入到已經排好序的有序表中,從而得到一個新的、記錄數增
排序演算法之插入排序演算法【java實現】
插入排序演算法通過對未排序的資料執行逐個插入至合適的位置而完成排序工作。思路簡單,應用較多。但是此演算法在資料無規律的情況下,需要移動大量的資料,效率不高。 步驟: (1)首先對陣列的前兩個資料進行從小到大排序。 (2)接著將第3個數據與排好序的兩個資料進行比較,將第3個數據插入合適的位
資料結構-排序演算法之插入排序
直接插入排序 一、演算法基本思想 直接插入排序是插入排序的一種,記錄array[0,len-1]已經排好序。即array[0]<array[1]<array[2].......array[len-1],將記錄計入arrry,插入到上述序列中的適當的位置,使得序
Java常見排序演算法之插入排序詳解
一、簡介 插入排序,就是假定一個參考值,假設該參考值左邊的元素都有序,那麼從該元素開始從後往前挨個查詢,如果找到比參考值大的數,那麼就將這個大的數後移,如果未找到比參考值大的數,說明不用移動元素。迴圈比較,這樣經過比較後移之後就會空出下標為0的位置,用於存放這個參考值。
排序演算法四--插入排序
直接插入排序 直接插入排序是一種簡單插入排序,基本思想是:把n個待排序的元素看成為一個有序表和一個無序表。開始時有序表中只包含1個元素,無序表中包含有n-1個元素,排序過程中每次從無序表中取出第一個元素,將它插入到有序表中的適當位置,使之成為新的有序表,重複n-1次可完成排