【c++】排序方法及記憶
1、演算法分類
2、演算法複雜度
穩定:如果a原本在b前面,而a=b,排序之後a仍然在b的前面。
不穩定:如果a原本在b的前面,而a=b,排序之後 a 可能會出現在 b 的後面。
時間複雜度:對排序資料的總的操作次數。反映當n變化時,操作次數呈現什麼規律。
空間複雜度:是指演算法在計算機內執行時所需儲存空間的度量,它也是資料規模n的函式。
記憶方式:
1.關於穩定性:
不穩定:快選堆希(快速排序、選擇排序、堆排序、希爾排序)
穩 定:插冒歸計基(簡單插入排序、氣泡排序、歸併排序、計數排序、基數排序)
2.關於移動次數和關鍵字順序無關的排序
順口溜:一堆(堆排序)海龜(歸併排序)選(選擇排序)基(基數排序)友
1、總排序趟數與初始狀態無關的有:(除了快速排序和優化的冒泡,其他都是)
2、演算法複雜度與初始狀態無關的有:堆排序、歸併排序、選擇排序、基數排序。
3、元素總比較次數與初始狀態無關的有:選擇排序、基數排序。
4、元素總移動次數與初始狀態無關的有:歸併排序、基數排序。
相關推薦
【c++】排序方法及記憶
1、演算法分類 2、演算法複雜度 穩定:如果a原本在b前面,而a=b,排序之後a仍然在b的前面。 不穩定:如果a原本在b的前面,而a=b,排序之後 a 可能會出現在 b 的後面。 時間複雜度:對排序資料的總的操作次數。反映當n變化時,操作次數呈現什麼規律。
【mysql】排序方法
記錄 mysql group by esc 通過 成績 avi 前三 方法 查詢各科成績前三名的記錄,不考慮並列的情況; select a.course_id as 課程ID, a.score as 成績, count(a.course_id) as 排名 from sc
【Java】排序方法1-----選擇排序法
對Java的排序方法進行總結,第一種,比較簡單,易理解的方法:選擇排序法,順序排列;遍歷整個陣列,將最大值放到陣列最後面,然後將剩下的元素再遍歷,再講第二大的元素放到倒數第2位…最後將最小的元素放在陣列
【C++】模板函式及模板類
常用模板類的情況#include<iostream> using namespace std; //模板函式,一個模板引數 template<typename T> T fun1(T a,T b){ if(a>b) {
【C++】向量(vector) 基本使用方法及注意事項
介紹: 向量(Vector)是一個封裝了動態大小陣列的順序容器(Sequence Container)。跟任意其它型別容器一樣,它能夠存放各種型別的物件。可以簡單的認為,向量是一個能夠存放任意型別的動態陣列。 特點: 1.順序序列 順序容器中的元素按照嚴格的線性順序排序。可以通過元素
【C#】氣泡排序、隱式和顯式轉換、函式及異常處理
一、普通氣泡排序: C#中常見的排序方法有:氣泡排序,快速排序,插入排序,選擇排序、堆排序以及歸併排序。雖然還沒學習過,但是也有耳聞,就先把它們先歸類。今天主要講這裡面最常見的氣泡排序。 【概念】 氣泡排序也就是講一組需要排序的數,進行從小到大,或從大到小的排列。計算機
【C#】面對物件和類、構造方法及名稱空間
一、面向物件 1、什麼是面向物件? 面向物件是一種思想,面向物件是將功能等通過物件來實現,將功能封裝進物件之中,讓物件去實現具體的細節,在面向物件中,將資料作為第一位,而方法或者說是演算法作為其次,這是對資料的一種優化,操作起來更加方便,簡化了過程。 2、為什麼要用面向
【C#】C# in deep 擴展方法
.text void 靜態方法 com play ext ebr rsize ref C#3 引入的擴展方法這一個理念. 擴展方法最明顯的特征是在方法參數中第一個參數有this聲明. 其實C#庫中有很多已經是擴展方法了.比如linq中對序列使用的查詢語句, where, s
Learning-Python【26】:反射及內置方法
回收 hasattr pass ict 不能 setattr hid 運行 opened 反射的概念 可以用字符串的方式去訪問對象的屬性,調用對象的方法(但是不能去訪問方法),Python 中一切皆對象,都可以使用反射。 反射有四種方法: hasattr:hasatt
【C++】int轉換為string的兩種方法(to_string、字串流)轉載
int轉換成string的兩種方法 第一種是to_string函式,這是C++11新增的,使用非常方便,簡單查了下:C++11標準增加了全域性函式std::to_string,以及std::stoi/stol/stoll等等函式(這幾個就是string轉int,long,以及long lo
【C#】List多權重排序
List.Sort((x, y) => -x.CompareTo(y)); 倒序排序 List.Sort((x, y) => x.CompareTo(y)); 正序排序 如果需要比較多個條件,比如裝備排序:橙>紫>藍,品質越高
【C++】常見關鍵字的使用場景及用法
自動變數型別 int,float,double,short,char,bool(參考基本資料長度,格式化輸出) STL資料型別 string:字串操作,可以通過下標訪問某個字元。 list,set,map:都有點像連結串列,不可以通過下標直接訪問。 vector
【C#】之 類及其方法
#一、類 ##1、什麼是類 在面嚮物件語言的結構化設計中,我們把那些看得見、摸得著、具體的、特指的事物稱作是物件,而類則是對物件的一個抽象化是一個模子,確定物件的型別,確定物件將會擁有的特徵(屬性)和行為(方法)。 類不佔用記憶體,物件佔用記憶體。 //類的宣告 //訪問引數
【C#】靜態變數和方法該如何使用?
什麼是靜態變數? 簡單的來說就是:用static修飾的變數,它屬於它所在的類所有,而不是具體的某一個物件。 靜態變數也被稱為全域性變數,就是它在程式執行的時候就被初始化,如果你在它初始化或使用的時候,沒有給它賦值,系統就會給它一個預設值。 靜態方法同理,簡單瞭解一下
【C++】子函式返回結構體的程式碼 及 字串常量傳入子函式的指標實現
說明: 1. 下面的子函式 getStu 裡,傳入了三個引數: 字串指標 char * name 整型變數 int k_year; char * k_sex; 2. 當把字串作為引數傳遞給子函式時,主程式中可以使用字串常量,但子函式的形參只能使用字元型指標 char
【C#】判斷字串中是否包含指定字串,contains與indexof方法效率問題
1 class Program 2 { 3 private const int N = 10000000; 4 private static Stopwatch watch = new Stopwatch(); 5 static v
【C++】如何進行簡單的檔案輸入、輸出?(基本操作及程式碼示例)(程式設計習慣)
使用cin進行輸入時,程式將輸入 視為一系列的位元組,每個位元組都被解釋為字元編碼,輸入一開始都是字元資料。 輸出檔案開啟 //第一種 ofstream outFile; outFile.open("my.txt"); //第二種 ofstream fout; char filename[5
【C】stdint.h標頭檔案和inttype.h標頭檔案的使用方法
Date: 2018.10.23 1、參考: 2、使用方法 這兩個標頭檔案是C99標準定義的關於型別重定義的,主要目的是實現統一的跨平臺資料定義。但是VC編譯器對C99標準的相容性很差,有
51微控制器【二】LED閃爍及流水燈附帶c語言位操作
void main(void) { while (1) { gLed1 = 0; // 點亮LED Delay(); // 延時一段時間 gLed1 = 1; // 熄滅LED Delay(); // 延時一段時間 } } voi
【C++】:用sort對string型別進行排序
前言 這個問題來自於leetcode上面的一道題 Valid Anagram Given two strings s and t, write a function to determine if t is an anagram of s. For ex