1. 程式人生 > >C++之插入排序

C++之插入排序

//sort
//main.cpp
#include <iostream>
#include <iomanip>

//宣告列印陣列
void DisplayDataArray( int *, int);
//宣告插入排序
void InsertSort(int *, int);

//main函式
int main()
{
	int test[6] = {12,34,2,56,4,89};
	DisplayDataArray(test,6);
	//BubbleSort(test, 6);
	//ChangeSort(test,6);
	//CheckSort(test,6);
	InsertSort(test,6);
	DisplayDataArray(test,6);
	return 0;
}

//列印陣列
void DisplayDataArray( int *pDataArray, int Count)
{
	for (int i = 0; i < Count; ++i)
	{
		std::cout <<std::setw(6)<< pDataArray[i];
	}
	std::cout << std::endl;
}

//插入排序
/*
演算法:
從第2個開始,比1小就交換,第3個比1小交換,比1大,看2,比2小,交換,第4個比第1個
*/
void InsertSort(int *pDataArray, int count)
{
	int tempData;	//輔助空間
	for(int i = 1; i < count; i++)	//要排序的
	{
		for (int j = 0; j < i; ++j)	//基準,依次增加
		{
			if (pDataArray[i] < pDataArray[j])		//從小到大排序
			{
				tempData = pDataArray[i];
				pDataArray[i] = pDataArray[j];
				pDataArray[j] = tempData;
			}
		}
	}
}


相關推薦

資料結構與演算法C++插入排序(續)

上一篇資料結構與演算法C++之插入排序中使用C++實現了插入排序演算法,但是使用了交換操作(swap),一次swap操作包括三次移位操作,造成執行時間比較長,本篇部落格對其改進。 (1)首先,考慮第一個元素8,此時只有一個元素,是排好序的 (2)然後考慮第二個元素6 (3)將元素6拷

資料結構與演算法C++插入排序

本篇實現的是插入排序,其演算法複雜度是O(n2),插入排序的原理來自部落格: 插入排序原理很簡單,將一組資料分成兩組,分別將其稱為有序組與待插入組。左邊為有序組,右邊為待插入組,每次從待插入組中取出一個元素,與有序組的元素進行比較,並找到合適的位置,將該元素插到有序組當中。就這樣,每次插

C++插入排序

//sort //main.cpp #include <iostream> #include <iomanip> //宣告列印陣列 void DisplayDataArray( int *, int); //宣告插入排序 void InsertSo

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

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

NOIP-C++大神培養計劃Step1.2.2——排序插入排序

上一節課呢,我們學習了氣泡排序,今天我們就來學學插入排序。 先看一個圖 很顯然,我們要選出一個數,並找到他的位置,就像圖中的一樣。 有過一定生活經驗的人會發現,這句就是打牌時的理牌嘛! 我們首先要用O(n)的時間來列舉每一個點,再用O(n)的時間查它之前在序列中的應有位置,所以,總

帶頭節點連結串列插入排序C語言版)

主要是對插入排序進行復習,先寫一個數組的插入排序。 #include <stdio.h> void traverse(int *arr, int len); void insert_sort(int *arr, int len); int ma

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

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

淺談C++冒泡排序、希爾排序、快速排序插入排序、堆排序、基數排序性能對比分析(好戲在後面,有圖有真相)

棧溢出 分享圖片 隨機數 函數 大根堆 oschina 共同學習 時間復雜度 還原 由於沒考慮到一些情況,對以上一些算法做了改進和對比!以及昨晚把希爾排序寫錯而誤以為其效率高過快速排序的糗事,今天一一做了更正和說明,如果你絕得本隨筆不是很妥可以嘗試看看這http://www

排序算法插入排序

oid code wap for pre spa 每次 [] 位置 思路:   每次叠代都和前面的元素進行比較,如果小於前面的元素則把當前元素和其前面的元素進行交換,然後接著再比較和前面元素的大小,若還是小於前面的元素則繼續進行交換。如果大於前面的元素則終止當前的叠代。和選

數據結構插入排序--折半插入排序

比較 right str 通過 空間復雜度 style pub clas 數據 排序思路:通過折半查找的方式找到合適的插入位置再插入。 算法實現: public class BiInsertSort { public static void biInsertSor

八大排序算法插入排序

代碼實現 == 記錄 分析 tro return dom span col 算法思想:每一趟將一個待排序的記錄,按照其關鍵字的大小插入到有序隊列的合適位置裏,知道全部插入完成。 設計步驟:   假設有一組無序序列 R0, R1, ... , RN-1。   (1) 我們先

c++冒泡排序

pub pau 好的 use log iostream ++ logs array #include<iostream> using namespace std; class BubbleSort { public: int* bubbleSort(i

php插入排序

for pri return arr -1 ++ 插入 print int <?phpfunction insertSort($arr) { //插入排序 $len = count($arr); for($i=1;$i<$len;$i++){

python插入排序

每次 http 技術分享 and 組元 pri art 取出 for 插入排序原理:它的工作原理是通過構建有序序列,對於未排序數據,在已排序序列中從後向前掃描,找到相應位置並插入。 插入排序核心:假設第一個元素排好,之後的元素對排好的部分從後向前比較並逐一移動。 實現技

六 簡單排序插入排序

++ .com pub clas amp 排序 bubuko 變量 image 原理 : 源代碼: public class insertSort { public static void sort(int[] array) //插入

排序插入排序:直接插入和希爾排序

insert void shel body 位置 由於 temp 不同 bsp 一、插入排序 1、思想:原理類似抓撲克牌,在有序表中進行插入和查找,插入合適的位置時,之後的元素需要往後移動 2、時間復雜度: 最好:O(N),正序情況,只有比較時間,無移動時間 最壞:O(N2

Java排序算法插入排序

.so main out [] ast public struct ++ clas package com.example.demo.dataStructure.sort; // 直接插入排序 public class InsertSort { public s

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

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

排序演算法插入排序(關鍵詞:資料結構/演算法/排序演算法/插入排序

假定:有 1 個亂序的數列 nums ,其中有 n 個數。 要求:排好序之後是 從小到大 的順序。 插入排序演算法 程式碼 def insert_sort(nums): i = 1 n = len(nums) while i <= n-1: j = i