資料結構之排序篇——插入排序 //無序查詢有序位置,邊比較邊移動,有哨兵
typedef int DataType;
void insert(DataType *a, int n) {
for (int i = 1; i < n; i++) {
//把選擇的元素放在臨時變數中
DataType t = a[i];
int j = 0;
for (j = i; j > 0 && a[j - 1] > t; j--) {
a[j] = a[j - 1];
}
a[j] = t;
}
}
void print(DataType* a, int n) {
for (int i = 0; i < n; i++)
printf("%d ", a[i]);
printf("\n");
}
int main() {
int a[10] = {3, 2, 4, 5, 7, 8, 9, 1, 6, 0};
insert(a, 10);
print(a, 10);
return 0;
}
相關推薦
資料結構之排序篇——插入排序 //無序查詢有序位置,邊比較邊移動,有哨兵
typedef int DataType; void insert(DataType *a, int n) { for (int i = 1; i < n; i++) {
資料結構之排序篇——插入排序 //無序查詢有序位置,邊比較邊移動,有哨兵
typedef int DataType; void insert(DataType *a, int n) { for (int i = 1; i < n; i++) { //把選擇的元素放在臨時變數中 Da
python 資料結構與演算法 day04 插入排序
1. 插入排序 原理: 插入排序也是把序列分為有序序列和無序序列,首先把第一個元素(i=0位置)作為有序序列,比較i=1位置的第二個元素(其實也是待插入的元素)跟有序序列的元素進行比較(從後往前比較)如果比有序序列的元素小就進行交換,如果比有序序列的元素大,就不動,接著找無序序列的下一個待插入的元素,也是
08_資料結構與演算法_插入排序_Python實現
""" 插入排序: 其思想類似於手中有一些亂序的撲克牌,要將其整理為有序的。 首先拿第二張,與之前一張對比,小於第一張時交換順序,大於時保持不動。 這樣i輪過後,第i大的牌就會出現在第i個位置。 """ import random def insertion_sort(
【資料結構與演算法】插入排序
插入排序是演算法中的基礎入門和氣泡排序、選擇排序都是必要掌握的。他們都是對比排序,需要通過比較大小交換位置,進行排序。 插入排序的實現思路: 1、 從第一個元素開始,這個元素可以認為已經被排序。 2、取出下一個元素,在已排序的序列中從後往前掃描。 3、如果該元素小於小於前
資料結構-雙向連結串列-插入排序練習題
/* 若線性表中各結點的查詢概率不等,則可用如下策略提高順序查詢的效率:若找到指定的結點,則將該結點的fre域的值加1, 使得經常被查詢的結點位於表的前端。設雙向連結串列的儲存結構有四個域:pre,data,next和fre,data域為字元型,fre域為整形。 設計滿足該功能的
java資料結構與演算法____插入排序
import java.util.Arrays; /** * @author God * 有一個已經有序的資料序列,要求在這個已經排好的資料序列中插入一個數, * 但要求插入後此資料序列仍然有序,這個時候就要用到一種新的排序方法——插入排序法, * 插入排序的基本操作就是將一個數據插
資料結構與演算法-直接插入排序
概要 基本概念 java程式碼實現 圖示執行過程 時間複雜度分析 基本概念 直接插入排序(Straight Insertion Sort)的基本操作是將一個記錄插入到
修煉內功---資料結構與演算法9---插入排序
插入排序的原理 我們將陣列中的資料分為兩個區間,已排序區間和未排序區間。 初始已排序區間只有一個元素,就是陣列的第一個元素。 插入演算法的核心思想是取未排序區間中的元素,在已排序區間中找到合適的插入位置將其插入,並保證已排序區間資料一直有序。 重複這個過程,直到未排序區間中元素為空,演算法結束。
資料結構與演算法 (四) 插入排序
1.演算法思想 插入排序的思想是每次選擇排序的記錄序列的第1個記錄,按照排序碼的大小將其插入已排序的記錄序列中的適當位置,直到所有記錄全部排序完畢 2.演算法原理 先將第1個記錄視為一個有序的記錄序列,然
資料結構與演算法 :插入排序
插入排序 插入排序(英語:Insertion Sort)是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃描,找到相應位置並插入。插入排序在實現上,在從後向前掃描過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。
資料結構與演算法——直接插入排序
好久沒寫部落格了,今天就簡單總結下直接插入排序。 什麼是直接插入排序? 直接插入排序就是將某一個元素與順序表中元素進行比較,然後插入到相應的位置,使整個順序表處於有序狀態。有關數據結構的書上都會用撲克牌進行比喻說明,就跟玩撲克一樣,當我們拿到幾張牌時,要想整理成一個順子,我
資料結構—單鏈表—直接插入排序
有一個帶頭節點的單鏈表L(至少有一個數據節點),設計一個程式使其元素呈遞增有序排列 。 思路: 先構造一個只含有一個數據節點的有序表。然後掃描單鏈表L餘下的節點*p(直到p為NULL為止),在有序表中通過比較找插入*p節點的前驅節點*pre,然後在*pre節點之後插
資料結構(14)——插入排序、交換排序、選擇排序、歸併排序和基數排序演算法的比較
在排序過程中依據不同原則對內部排序方法進行分類,可大致分為插入排序、交換排序、選擇排序、歸併排序和基數排序等五類 插入排序 直接插入排序 直接插入排序市一中最簡單的排序方法,它的基本操作是將一個記錄插入到已排好序的有序表中,從而得到一
【大話資料結構&演算法】直接插入排序
直接插入排序的基本思想:每趟將一個待排元素作為關鍵字,按照其關鍵字值得大小插入到已經排好序的部分序列的適當位置,直到插入完成。 演算法思想總結如下:(設待排序的陣列為a[0…n-1]) 1
資料結構之單鏈表插入刪除操作
#include<iostream> using namespace std; typedef struct LNode { int data; struct LNode *next; }LNode; void createListR(LNode *C, int a[], int n
資料結構之圖篇(2):圖的基本操作 深度和廣度遍歷
程式碼實現 main.cpp(主函式) #include <iostream> #include "CMap.h" using namespace std; /** 圖的的儲存:鄰接矩陣 圖的遍歷:深度+廣度 A / \
資料結構之圖篇(1):概述
圖的概念 1.有向圖(由節點和方向箭頭構成)無向圖(只有節點,相當於每條連線都是雙向的) 2.出度:頂點的箭頭指出;入度:頂點的箭頭指入; 3.有向圖:弧;無向圖:邊; 5.權值:弧或者邊上的資料 圖的儲存結構 陣列儲存 1.鄰接矩陣(頂點陣列【索引+資料】+鄰接矩
資料結構與演算法篇 之冒泡,插入,選擇排序
排序演算法其實有很多,比如猴子排序,睡眠排序,麵條排序,聽都沒聽過。。。。。。。 其中最經典的自常用的是:氣泡排序,插入排序,選擇排序,歸併排序,快速排序,計數排序,基數排序,桶排序 排序演算法裡面一般第一個接觸的就是氣泡排序,然後就是選擇排序,插入排序,這幾個簡單的
排序演算法之插入排序(關鍵詞:資料結構/演算法/排序演算法/插入排序)
假定:有 1 個亂序的數列 nums ,其中有 n 個數。 要求:排好序之後是 從小到大 的順序。 插入排序演算法 程式碼 def insert_sort(nums): i = 1 n = len(nums) while i <= n-1: j = i