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

C ++直接插入排序演算法

直接插入排序的原理:將一個待排序的元素,通過與前面已經排好序的有序序列所有元素進行比較後,再插入到有序序列中。

#include <iostream>
#include <stdlib.h>
using namespace std;

/*****************************************************************/
/*  插入排序
/****************************************************************/

void swap( int array[], int j)  //位置互換函式
{
	int temp = array[j];
	array[j] = array[j-1];
	array[j-1] = temp;
}


void InsertSort(int array[], int n)  //插入排序函式
{
	for (int i = 1; i < n; i++)  //當i小於n則結束迴圈
	
		for ( int j = i; j > 0; j--)  //j--是有序陣列從尾到頭進行比較
		{
			if(array[j] < array[j-1])  
			swap(array[j], array[j-1]);  //如果條件成立,就呼叫swap函式進行位置互換
			else
				break;    //如果條件不成立,就結束本次迴圈
		}
	}
}


int main(void)  //主程式
{
	
	const int n = 6;  //陣列元素的數量
	cout << "請輸入6個整數: " << endl;
	int array[n];
	for (int i = 0; i < n; i++)  
	{
		cin >> array[i];
	}
	

	InsertSort(array, n);  //呼叫InsertSort函式,進行比較

	cout << endl;  //換行

	cout << "由小到大的順序排列後: " << endl;
	for (int i = 0; i < 6; i++)  
	{
		cout << array[i] << ",";  
	}

	cout << endl << endl;  //換行

	system("pause");  //除錯時,黑視窗不會閃退,一直保持
	return 0;
}

執行結果:

相關推薦

C ++直接插入排序演算法

直接插入排序的原理:將一個待排序的元素,通過與前面已經排好序的有序序列所有元素進行比較後,再插入到有序序列中。 #include <iostream> #include <stdlib.h> using namespace std; /******

Linux下c直接插入排序演算法

 主函式  1 //排序主函式   2 #include <stdio.h>   3 void main()   4 {   5 int ss[10]={5,0,6,3,1,8,4,9,7,2};   6 int i;   7 for(i=0;i<10;i

C++直接插入排序

基本思想:            每步將一個待排序的機率按其順序碼大小插入到前面已排序的序列的合適位置(從後向前找到合適位置後),直到全部插入排序。 示例:           57,68,5

淺談直接插入排序演算法思想以及時間複雜度分析

研究意義 直接插入排序是最基本的一種排序演算法,其思想簡單,容易掌握,對後期的學習也有一定的幫助。 必備知識(之後不再敘述) 排序:將一組雜亂無章的資料排列成一個按關鍵字有序的序列。 穩定性:關鍵值相

直接插入排序演算法詳解

直接插入排序演算法到底是什麼個情況呢? 我們看到“直接”2個字,說明這個演算法應該是先得到我們插入的位置,然後就直接插入進去沒有什麼比較過程就插入進去了。 那麼直接插入排序演算法的本質是什麼呢,比如我們有一個有序陣列 1 2 3 4 5 6 8 9 我

直接插入排序演算法

直接插入排序 (Straight Insertion sort) 基本思想:把陣列中待排序的n個元素看成一個有序表和無序表,開始時有序表只有一個元素,而元素表中包含有n-1個元素。排序過程中,每次取出無序表中第一個元素,將它插入到有序表的適當位置上,使之成為一個新的有序表

直接插入排序演算法-設定哨兵版

/*直接插入排序演算法的時間複雜度為O(n^2), 它是穩定的排序演算法*/ #include <stdio.h> int sum[1000]; int main() { int n,i,j; scanf("%d",&n); for(i=1;i&l

排序演算法c語言描述---直接插入排序

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

C語言直接插入排序和折半插入排序演算法的實現

直接插入排序是是一種穩定的排序,其演算法簡便,適用於順序結構和鏈式結構,更適合於基本有序(正序)的情況。其空間複雜度為O(1),時間複雜度為O(n2)。下面是實現演算法: 先是預定義和型別定義: typedef int Status; typedef int ElemTyp

八大排序演算法之一直接插入排序C語言)

概述 排序有內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。 我們這裡說說八大排序就是內部排序。     當n較大,則應採用時間複雜度為O(nlog2n)的排序方法:快

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

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

直接插入排序(高級版)之C++實現

include ostream 源代碼 cpp -s 臨時 ios 結束 中間變量 直接插入排序(高級版)之C++實現 一、源代碼:InsertSortHigh.cpp 1 /*直接插入排序思想: 2  假設待排序的記錄存放在數組R[1..n]中。初始時,R[1]自成

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

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

C數據結構排序算法——直接插入排序法用法總結(轉http://blog.csdn.net/lg1259156776/)

所有 可能 app 必須 操作 itl 直接排序 works 技術分享 聲明:引用請註明出處http://blog.csdn.net/lg1259156776/ 排序相關的的基本概念 排序:將一組雜亂無章的數據按一定的規律順次排列起來。 數據表( data list)

直接插入排序C/C++

ons lex clas 最好 循環條件 逆序 時間 size 復雜度 void InsertionSort(int a[],int len); /* 算法: */ //由小到大的直接插入排序 direct insertionsort void Inserti

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

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

(排序演算法)linux c語言實現二分插入排序演算法(簡化版本的插入排序演算法

 二分插入演算法是在已經排序好的序列裡插入一個元素,是穩定的演算法,關鍵詞是折中。 比如說我要在12345678910裡插入一個3,那麼我先看看中間的數比3大,還是比3小,要是比3大,我就去後一半,如果是比3小,我就去前一半,現在進入某個一半後,再做如此操作,最後將其他的元素依次往後挪

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

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

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

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

演算法 直接插入排序小述

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