1. 程式人生 > >QT中使用快速排序

QT中使用快速排序

今天想到了用QT做一個快速排序,所以研究了一下。
因為用習慣了,C++的std::sort,就算是C的時候也用得是stdlib.h中的qsort。

手寫板
手寫板的快排其實不難,只是自從用C++打ACM之後就很少裸敲了。

其中C語言 stdlib
功 能: 使用快速排序例程進行排序
用 法: void qsort(void base,int nelem,int width,int (*fcmp)(const void ,const void *));
引數:
1 待排序陣列首地址
2 陣列中待排序元素數量
3 各元素的佔用空間大小
4 指向函式的指標,用於確定排序的順序
這個庫函式在QT中是支援的,但是我現在是用不太來這個東西,而且這個的函式對STL的排序不太支援。

接著用標準庫中< algorithm >的sort排序,這是C++中一個專門針對泛型資料排序的中可以吧 ,可是寫在qt中卻無法識別sort、std::sort。其實可以理解String轉化為QString,所以我們猜測 是qSort。
用法和sort差不多。

Header: < algorithm> Namespace: std

bool CapitySort(const SVideoChip msVideoFirst,const SVideoChip msVideoSecond)  
{  
    return (msVideoFirst.mi64VideoCapacity < msVideoSecond.mi64VideoCapacity);  
}  

void * VideoSort
(QList<SVideoChip>* msVideoChipList) { qSort(msVideoChipList->begin(),msVideoChipList->end(),CapitySort); // std::sort(msVideoChipList->begin(),msVideoChipList->end(),CapitySort); }

相關推薦

Qt快速讀寫Excel方法封裝

import mon works body oid ati ebo set 區域 #include "RwExcel.h"/*快速讀寫的機制是實現獲取有效區域只調用一次dynamicCall("Value");或setProperty("Value", var);即可, *

lua快速排序的理解

快速排序的時間複雜度是:O(n * log(n)) 快速排序的主要思想是分治思想 快速排序是找出一個元素作為基準,然後對陣列進行分割槽操作,是基準左邊的元素的值不大於基準值,基準右邊的元素值,都不少於基準值,如此作為基準的元素調整到排序後的正確位置. --[[-- - p

java快速排序的優化

接上節講的快速排序,我們來了解一下幾種它的優化。1.隨機取基準    上節我們採取的是以開頭為基準,然後進行一次快速排序,但是如果原陣列相對有序的話,那麼就會出現每次找基準,原陣列順序不變,時間複雜度相當的高,為了處理這種情況我們採用隨機選取基準,就是 public stat

JAVA快速排序演算法的實現

使用快速排序演算法對a[0,n-1]進行排序,從a[0,n-1]中選擇一個元素作為middle,該元素為中點(支點),把剩下的元素分為兩段——left和right;使得left中的元素都小於或等於中點,right中的元素都大於或等於中點。遞迴的使用快速排序演算法

QT使用快速排序

今天想到了用QT做一個快速排序,所以研究了一下。 因為用習慣了,C++的std::sort,就算是C的時候也用得是stdlib.h中的qsort。 手寫板 手寫板的快排其實不難,只是自從用C++打ACM之後就很少裸敲了。 其中C語言 stdlib

算法快速排序 quicksort

wide div 對比 nal optimize rate fse incr mce 快速排序之所以比較快,是因為相比冒泡排序,每次交換是跳躍式的。每次排序的時候設置一個基準點,將小於等於基準點的數全部放到基準點的左邊,將大於等於基準點的數全 部放到基準點的右邊。這樣在每次

快速排序之三數取

lan AI 復雜 方法 ted 避免 想是 args code ---恢復內容開始--- 快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分的所有數據都要小,然後再按此

JS冒泡排序,選擇排序快速排序

nbsp quic 獲取 length 中間 ret dex bsp 遞歸 var arr = [1,4,2,9,7,6,5,4,7,5]; // 冒泡排序(通俗的說就是j 和 j+1打,誰贏了誰去後面) for(var i = 1;i<

排序算法——歸並排序快速排序

nsh 設置 遍歷數組 遇到 對數 geek 三種 元素 相同 冒泡排序、插入排序、選擇排序這三種算法的時間復雜度都為 $O(n^2)$,只適合小規模的數據。今天,我們來認識兩種時間復雜度為 $O(nlogn)$ 的排序算法——歸並排序(Merge Sort)和快速排序(

QTQtableview視圖表格中點選表頭進行排序

因為要顯示的資料有多列,很自然的會想到要能夠對顯示的資料進行排序。如果直接操作model裡的資料,不太方便,因為最好是能由使用者自己選擇按哪一列進行排序。如果通過訊號槽機制,也不是很方便。然後找到QTableView下有一個setSortingEnabled()的函式。在將該函式設定為True後,在

排序演算法——歸併排序快速排序

氣泡排序、插入排序、選擇排序這三種演算法的時間複雜度都為 O (

演算法初級02——荷蘭國旗問題、隨機快速排序、堆排序、桶排序、相鄰兩數的最大差值問題、工程的綜合排序演算法

主要討論:荷蘭國旗問題、隨機快速排序、堆排序、穩定性、比較器、桶排序、相鄰兩數的最大差值問題和簡單介紹工程中的綜合排序演算法   題目一 給定一個數組arr,和一個數num,請把小於等於num的數放在陣列的左邊,大於num的數放在陣列的右邊。 要求額外空間複雜度O(1),時間複雜度O(N)

javascript quicksort quick sort, insertion sort 三分值法 快速排序 插入排序

* Arr.js function Arr() { this.cmp = Arr.defaultCompareFunction; } Arr.prototype = []; Arr.fromArray = function(/*Array */a) /* :Arr */ { var

快速排序(三數值法)

package sort; public class QuickSort {//快速排序 public static void main(String[] args) { int[] array = {39,44,1,0,8,66,23,67,9,15,100,70,22,3,6,54

在JAVA如何將快速排序

在JAVA中如何將陣列快速排序 在c語言中,我們想要給一個數組排序,就必須一步步寫演算法,而在面向物件的JAVA 語言中,我們直接使用已經封裝好的函式即可。sort這個函式可以直接用來給已知陣列排序,但是在呼叫之前我麼需要找到放置它的位置。 import

C語言常用排序演算法(氣泡排序、選擇排序、插入排序、希爾排序快速排序、堆排序)實現比較

以下程式在win10 X64位作業系統,使用VS2017執行驗證可行 排序是非常重要且很常用的一種操作,有氣泡排序、選擇排序、插入排序、希爾排序、快速排序、堆排序等多種方法。 例項1 冒泡法排序 1.前言: 陣列中有N個整數,用冒泡法將它們從小到大(或從大到小)排序。冒泡法

使用VC庫函式快速排序函式

                上一篇講了快速排序的實現。但在很多場合,直接使用快速排序的庫函式是很方便的。下面講下VC中庫函式qsort()的用法:函式原型:void qsort(void *base,size_t num,size_t width, int (__cdecl *compare )(cons

快速排序的partition.

div ati 排序 span [] 一個數 代碼 等於 圖片 經典快速排序中的partition, 將最後一個元素作為劃分點。 維護兩個區域。 <= x 的, >x 的區域。 劃分過程中還有個待定的區域。 [L,less] 區域小於x, [less+1,c

學過的演算法最快捷——快速排序

<strong style="font-size:24px;"> </strong><span style="font-size:14px;">/// <summary> /// 快速排序法 /// </summary>

java八大排序演算法(五)之快速排序——三數取

圖解排序演算法(五)之快速排序——三數取中法 快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以遞迴進行,