1. 程式人生 > >C語言排序演算法--直接插入排序

C語言排序演算法--直接插入排序

直接插入排序法是指將一個記錄插入到已排好序的有序序列中,使整個序列在新插入了一個記錄之後仍然有序,插入位置的確定是通過將待插入的記錄與有序區中的各記錄自右向左依次比較其關鍵字值的大小確定的。

#include <stdio.h>
void isort(int a[],int n);
int main()
{
	int i,a[11];
	for(i=1;i<11;i++){
		scanf("%d",&a[i]);
	}
	printf("Input the original order:\n");
	for(i=1;i<11;i++){
		printf("%d ",a[i]);
	}
	isort(a,10);
	printf("\nthe sorted numbers:\n");
	for(i=1;i<11;i++){
		printf("%d ",a[i]);
	}
}
void isort(int s[],int n)
{
	int i,j;
	for(i=2;i<=n;i++){
		s[0]=s[i];  /*給監視哨賦值*/
		j=i-1;  /*確定要進行比較的元素的最右邊位置*/ 
		while(s[0]<s[j]){
			s[j+1]=s[j];  /*資料右移*/ 
			j--;  /*移向左邊未進行比較的元素*/ 
		}
		s[j+1]=s[0]; /*插入*/ 
	}
}

相關推薦

C語言排序演算法--直接插入排序

直接插入排序法是指將一個記錄插入到已排好序的有序序列中,使整個序列在新插入了一個記錄之後仍然有序,插入位置的確定是通過將待插入的記錄與有序區中的各記錄自右向左依次比較其關鍵字值的大小確定的。 #include <stdio.h> void isort(int

小甲魚 排序演算法 直接插入排序

小甲魚 排序演算法 直接插入排序   在這之間排序演算法的時間複雜度是O(n2),希爾排序突破了O(n*logn)   直接插入排序演算法(Straight Insertion Sort)的基本操作是將一個記錄插入到已經排好序的有序表中,從而得到一個新的、記錄數增

排序演算法 -- 直接插入排序

排序演算法的基本概念 排序的定義 排序的穩定性 內排序與外排序 內排序是整個排序過程中,待排序的所有記錄全部放置在記憶體中。 外排序是由於排序的記錄個數太多,不能同時放置在記憶體,整個排序過程需要內外存之間多次資料交換才能進行。 直接插入排序

七大排序演算法---直接插入排序及折半優化

思路分析 將一個待排序元素,按其大小,插入到前面已經排好序的一組元素的合適位置上去,直到元素全部插完為止。 簡單來說:end指已經排好陣列的最後一個元素,end找到插入的位置(設定一個temp,

C語言單鏈表的3種排序演算法插入排序,氣泡排序,選擇排序

//插入排序 stu *view_sort_math(stu *head)   {       struct student *first;     struct student *t;       struct student *p;        struct student *q;        fi

排序演算法插入排序及其C語言程式碼實現

概述 一個插入排序是另一種簡單排序,它的思路是:每次從未排好的序列中選出第一個元素插入到已排好的序列中。它的演算法步驟可以大致歸納如下: 1. 從未排好的序列中拿出首元素,並把它賦值給temp變數; 2. 從排好的序列中,依次與temp進行比較,如果元素比temp大,則將元素

C++學習之路——直接插入排序

sin alt nbsp namespace ios include 數據結構 log ins 一個人獨自學習,感覺有進步就滿足,即便是數據結構沒學好,算法也找不清思路,但把人家的代碼看看理解好打出來,也挺滿意的。 1 #include <iostrea

排序演算法--插入排序直接插入排序

直接插入排序的核心思想是把一個記錄插入一個有序序列中,每插入一個記錄就得到一個新的有序序列,直到所有記錄都插入成功,得到有序序列。 每次插入記錄時的有序序列如何得到,關鍵在第一次,第一次要插入的記錄時序列的第二個值,有序序列只有一個值,就是第一個記錄。 程式碼: #in

排序演算法插入排序直接插入、希爾排序

前言 一個好的排序演算法對於程式的優化會有很大的提升,雖然在許多語言的類庫中就存在了N種排序方法,但是隻有在瞭解了每一種排序演算法後才能更好的在實際中運用這些演算法。這裡我主要說明插入排序中的直接插入以及希爾排序的實現。 直接插入 直接插入排序是最簡單的排序演算法之一。對於直

c#程式碼實現排序演算法插入排序

插入排序的平均時間複雜度為O(n²),最好時間複雜度為O(n),最壞時間複雜度為O(n²),空間複雜度為O(1),是一種穩定的演算法。 1.將整個待排序的記錄序列劃分成有序區和無序區,初始時有序區為待排序記錄序列的第一個記錄,無序區包括所有剩餘待排序的記錄。 2.將無序區的第一個

演算法 直接插入排序小述

一、概述 本節主要簡單介紹一下直接插入排序演算法,直接插入排序(Straight Insertion Sort)是一種最簡單的排序方法,其基本操作是將一條記錄插入到已排好的有序表中,從而得到一個新的、記錄數量增1的有序表。摘自百度百科。 二、分析 假如現在有一個具有n+1個元

排序演算法:選擇排序直接插入排序,氣泡排序

package com.Algorithm.Search_Sort; import java.util.Arrays; public class Sort { public int array[] = {99,34,76,92,34,17,77,41,40,36,6}; //

資料結構與演算法-直接插入排序

概要 基本概念 java程式碼實現 圖示執行過程 時間複雜度分析 基本概念 直接插入排序(Straight Insertion Sort)的基本操作是將一個記錄插入到

Java語言陣列排序——氣泡排序,選擇排序,快速排序直接插入排序

今天主要來說下陣列排序的問題,主要介紹的有氣泡排序,選擇排序,快速排序,直接插入排序四種排序: 1.氣泡排序: 主要有原理圖與程式碼解釋; 原理圖借鑑一位老師畫的圖,嘻嘻,老師畫的圖比較好看,就拿來借鑑下: 2.選擇排序 3.快速排序 4.直接插

Java演算法——直接插入排序

直接插入排序 前言 直接插入是一種穩定的插入排序,效率較高,而且時間複雜度也低,因為只是在一個數組內部進行內排,但是隻適用於在有一些以前就排好的順序的陣列內部,如果在很長又很雜亂的陣列內部進行排序的話,會讓效率降低。 直接插入排序描述 首先定義一段長度為n的陣列,從最左邊開始

經典排序演算法,氣泡排序,選擇排序直接插入排序,希爾排序,快速排序,歸併排序,二分查詢。原理及python實現。

1.氣泡排序 氣泡排序 1.比較相鄰的元素,如果第一個比第二個大(升序),就交換他們兩個 2.對每一對相鄰的元素做同樣的工作,從開始到結尾的最後一對 這步做完後,最後的元素會是最大的數 3.針對所有的元素重複以上的步驟,除了最

排序演算法(一)氣泡排序,簡單選擇排序直接插入排序,希爾排序

氣泡排序,簡單選擇排序,直接插入排序是三種複雜度為O(n2)的演算法,希爾排序在特殊增量序列的時候可以獲得複雜度為O(n3/2) 氣泡排序 1、最簡單的排序實現 這裡把每個數和這個數之後的每個數比較,大於就交換位置。 缺點:多出了很多次沒有用的交

常用內部排序演算法之四:簡單選擇排序直接插入排序和氣泡排序

前言 之所以把這三類演算法放在一塊,是因為除此之外的演算法都是在這三類演算法的基礎上進行優化的。簡單選擇排序的思想是每一趟n−i+1(i=1,2,...,n−1)個記錄中選擇最小的記錄作為有序序列的第i個記錄。直接插入排序的思想是將一個記錄插入到已經排好序的有

資料結構與演算法——直接插入排序

好久沒寫部落格了,今天就簡單總結下直接插入排序。 什麼是直接插入排序? 直接插入排序就是將某一個元素與順序表中元素進行比較,然後插入到相應的位置,使整個順序表處於有序狀態。有關數據結構的書上都會用撲克牌進行比喻說明,就跟玩撲克一樣,當我們拿到幾張牌時,要想整理成一個順子,我

演算法】 簡單選擇排序直接插入排序

          簡單選擇排序與直接插入排序算是排序演算法裡最簡單的兩個演算法了,做個對比就更容易理解了。 簡單選擇排序       簡單選擇排序就是在要排序的陣列中,選出最小或者最大的一個數與第