c++排序算法ppt_C/C++學習教程:C語言排序算法—插入排序算法

e35b50eb8ce2c5d07544a7ba85c77233.png
前言:插入排序算法是所有排序方法中最簡單的一種算法,其主要的實現思想是將數據按照一定的順序一個一個的插入到有序的表中,最終得到的序列就是已經排序好的數據。
直接插入排序是插入排序算法中的一種,采用的方法是:在添加新的記錄時,使用順序查找的方式找到其要插入的位置,然后將新記錄插入。
很多初學者所說的插入排序,實際上指的就是直接插入排序算法,插入排序算法還包括折半插入排序、2-路插入排序,表插入排序和希爾排序等。

5ccbf3bb49542732c650fb67b69ec846.png

直接插入排序的基本操作是將一個記錄插入到已經排好的有序表中。

先選定一個位置i,插入排序將i左側比位置i數值大的數值全部右移,然后將原來i對應的值插入回去。

ef7420d3428a87b4678ff21a855c9bdf.png
voidInsertSort(int*p){int i,j;inttmp=0;for(i=1;i<10;i++)
{if(p[i-1]>p[i]) {tmp = p[i];//將p[i]左邊比p[i]大的全部左移,要先將其賦給一個緩存變量
for(j=i-1;p[j]>tmp;j--)
{p[j+1]=p[j];
}p[j+1]=tmp;
} }}

過程,先將p[i]的值賦給tmp,然后i左側的數值與tmp比較,比tmp大則右移一位,不比tmp大,則將tmp插入回去。

6287bb651cb96d53fe4d1dcbd8cc124f.png

最好情況下,即要排序的序列本身是有序的,第7行的比較一共執行了n-1次,沒有移動記錄,時間復雜度為O(n)。

最壞情況下,需要比較2+3+...+n=(n+2)(n-1)/2次,移動次數為(n+4)(n-1)/2

8a20c6d21f7109c9f8fe5e6ac34ae13c.png

時間復雜度為O(n2)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/257692.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257692.shtml
英文地址,請注明出處:http://en.pswp.cn/news/257692.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python函數參數

1.位置參數 2.默認參數 指向參數為不可變對象 3.可變參數 **args 一個列表list或是元組tuple 4.關鍵字參數 **kw,是一個字典dict 5.命名關鍵字參數 *, 轉載于:https://www.cnblogs.com/aliy-pan/p/5198025.html

Python 常用函數 configparser模塊

使用ConfigParser模塊讀寫ini文件 ConfigParserPython的ConfigParser Module中定義了3個類對INI文件進行操作。分別是RawConfigParser、ConfigParser、SafeConfigParser。模塊所解析的ini配置文件是由多個section構成&#xff0c;每個section名用中括號‘[]’包含&#xff0c;每…

自制Unity小游戲TankHero-2D(3)開始玩起來

自制Unity小游戲TankHero-2D(3)開始玩起來 我在做這樣一個坦克游戲&#xff0c;是仿照&#xff08;http://game.kid.qq.com/a/20140221/028931.htm&#xff09;這個游戲制作的。僅為學習Unity之用。圖片大部分是自己畫的&#xff0c;少數是從網上搜來的。您可以到我的github頁…

mysql按月分列統計_實現mysql按月統計的教程

mysql有個字段是DATETIME類型&#xff0c;要實現可以按月統計&#xff0c;該怎么寫sql語句&#xff1f;select month(f1) from tt group by month(f1)or select DATE_FORMAT(f1,%m) from tt group by DATE_FORMAT(f1,%m)比如數據庫的為2008-01-15 12&#xff1a;10&#xff1a;…

Log4j的擴展-支持設置最大日志數量的DailyRollingFileAppender

Log4j現在已經被大家熟知了&#xff0c;所有細節都可以在網上查到&#xff0c;Log4j支持Appender&#xff0c;其中DailyRollingFileAppender是被經常用到的Appender之一。在討論今天的主題之前&#xff0c;我們先看下另外一個Appender。 最常用的Appender——RollingFileAppend…

VirtualBox虛擬機安裝CentOS 7

新建虛擬機 因為比較簡單&#xff0c;所以對于VirtualBox就不做過多介紹了&#xff0c;直接下載安裝即可&#xff0c;安裝好之后打開Oracle VM VirtualBox管理器&#xff0c;點擊新建&#xff0c;選擇Red Hat&#xff08;根據windows主機選擇 32/64 bit&#xff0c;通常會自動識…

mysql 指定賬戶已存在_安裝mysql時告訴我指定的賬戶已存在?

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云數據庫專家保駕護航&#xff0c;為用戶…

C語言:用字符讀取流和輸出流來讀寫入數據。(文本文件)

/* 文件的幾種操作模式: r:只讀 w:只寫 rw:可讀可寫 文件的分類&#xff1a; t:文本文件(字符文件) b:二進制文件(字節文件)注意&#xff1a; 采用只讀方式打開文件時,如果源文件不存在,打開文件會失敗&#xff01; 采用只寫方式打開文件時,不管源文件存不存在,都不會失敗…

PC 上訪問設備數據庫的方法

通過 .NET 訪問 .sdf 的數據庫的方法&#xff1a; 在 VS2005 IDE 中&#xff0c;創建 SQL MOible 數據庫&#xff0c;編輯表結果和填充數據。 具體是在 Server Explorer 中&#xff0c;右鍵單擊 “Data Connections”&#xff0c;選擇 “Add Connection”&#xff0c;新建一個 …

模板原理和操作數據類的觀點【艱難的一天,慢慢的會過去的】

1.模板原理&#xff1a;視圖類【將數據輸出到模板中&#xff0c;實現對視圖的控制】 smarty的類實現對視圖的控制【展示和smarty的基本語法&#xff1a;smarty需要它的庫進行支持】 面向對象的編程中對象的訪問和類的訪問本質上還是代碼空間的訪問&#xff0c;區別也在于對象的…

mysql 用戶 類別_從mysql里讀取用戶類型

##1、后端1(從mysql里讀取用戶類型)&#xff1a;from django import formsfrom django.forms import widgetsfrom django.forms import fieldsfrom app01 import modelsfrom django.forms import ModelChoiceField,ModelMultipleChoiceFieldfrom django.shortcuts import rende…

從C語言到C++成長經歷所得的一些技巧和感悟

我介紹幾個辦法&#xff0c;學習辦法&#xff0c;期望你能找到愛好1。必定要和喜愛編程的&#xff0c;或編程兇猛的&#xff0c;或常常編程的人&#xff0c;在一同&#xff0c;常常探討問題&#xff01;初學編程會有許多問題呈現&#xff0c;你自己很 難處理 c是我們必定要學的…

老子《道德經》第三十三章

上德不德&#xff0c;是以有德&#xff1b;下德不失德&#xff0c;是以無德。 上德無為而無不為&#xff0c;下德為之而有以為&#xff0c;上仁為之而無以為&#xff0c;上義為之而有以為。 上禮為之而莫之應&#xff0c;則攘臂而扔之。 故失道而后德&#xff0c;失德而后仁&am…

[Spring]-各種標注-零配置

個人學習筆記&#xff0c;記錄了一些比較基礎的標注&#xff1b; 1、controller 控制器&#xff08;注入服務&#xff09;2、service 服務&#xff08;注入dao&#xff09;3、repository dao&#xff08;實現dao訪問&#xff09;4、component pojo實例化到spring容器中&#xf…

mysql弄丟初始密碼_MySql密碼丟失

windows下mysql密碼忘記了第一步&#xff1a;netstat -nat(可以查看mysql是否啟動了&#xff0c;如果啟動了&#xff0c;可以用輸入net stop mysql(或者通過任務管理器結束進程))第二步&#xff1a;mysqld --skip-grant-tables&#xff0c;不要關閉窗口第三步&#xff1a;開啟一…

CodeForces-500C

傳送門 給n本不同重量的一摞書編號1&#xff5e;n。給定m次操作。操作b代表花費標號為b的書上方其他書的重量總和&#xff0c;將書b位移到這疊書的最上方。問初始書應該如何疊放&#xff0c;才能使m次操作后總花費最小 輸入 n本書 m次操作 n個數 書的重量 m個數 操作對象 輸出 …

java基礎篇---網絡編程(UDP程序設計)

UDP程序設計 在TCP的索引操作都必須建立可靠地連接&#xff0c;這樣一來肯定會浪費大量的系統性能&#xff0c;為了減少這種開銷&#xff0c;在網絡中又提供了另外一種傳輸協議---UDP,不可靠的連接&#xff0c;這種協議在各個聊天工具中被廣泛的應用。 咋UDP開發中使用Datagram…

bzoj - 2038: [2009國家集訓隊]小Z的襪子(hose)

題目鏈接:http://www.lydsy.com/JudgeOnline/problem.php?id2038 莫隊算法可以解決一類不修改、離線查詢問題。而這題可以用莫隊來做。 *我是看這個論文學會的&#xff1a;&#xff08;鏈接~&#xff09; 其實莫隊就是一種優化的暴力&#xff0c;只是把查詢都離線預先按照規則…

c++ 靜態變量賦值_Python變量及常量解釋說明

變量(1)在計算機程序中,變量不僅可以是數字,還可以是任意數據類型,變量子啊程序中就是一個變量名表示的,變量名必須是大小寫英文,數字,和"_"的組合,切不能以數字開頭.a 1 #變量a是一個整數1b "shuai" #變量b是一個字符串1c True #變量c是一個布爾值Tru…

Hibernate中session的clear(),flush(),evict()方法詳解

2019獨角獸企業重金招聘Python工程師標準>>> 一、Clear 方法 無論是Load 還是 Get 都會首先查找緩存&#xff08;一級緩存&#xff09; 如果沒有&#xff0c;才會去數據庫查找&#xff0c;調用Clear() 方法&#xff0c;可以強制清除Session緩存。例&#xff1a; pub…