<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
快速排序,說白了就是給基準資料找其正確索引位置的過程
希爾排序相當於直接插入排序的升級,他們屬於插入排序類;堆排序相當於簡單選擇排序的升級,他們同屬於選擇排序類;而對於交換排序類的氣泡排序升級版本就是快速排序。
通過一趟排序將待排記錄分割成獨立的兩部分,其中一部分記錄的關鍵字比另一部分記錄的關鍵字小,則可分別對這兩部分記錄繼續進行排序,以達到整個排序的目的。
總結來說:就是分治+填數
以12、10、8、22、5、13、28、21、11我們要將它按從小到大排序排序過程:
詳細過程:
設定兩個指標 left 和 right,它們初始分別指向待排序序列的左端和右端;此外還要附設一個基準元素 tmp(一般選取第一個,本例中基準tmp的值為 20)。
首先從 right 所指的位置從右向左搜尋找到第一個小於 tmp 的元素,然後將其記錄在基準元素所在的位置。
接著從 left 所指的位置從左向右搜尋找到第一個大於 tmp的元素,然後將其記錄在 right 所指向的位置。
然後再從 right 所指向的位置繼續從右向左搜尋找到第一個小於 tmp 的元素,然後將其記錄在 left 所指向的位置。
接著,left 繼續從左向右搜尋第一個大於 tmp的元素,如果在搜尋過程中出現了 left == right ,則說明一趟快速排序結束。此時將 tmp 記錄在 left 和 right 共同指向的位置即可。
以上便是一輪快速排序的詳細過程
注意:
//一次劃分函數 核心函數 //返回基準值最終所在下標 int Partition(int *arr, int left, int right) { //先講arr陣列裡的[left, right]的第一個值 作為基準值 int tmp = arr[left]; while(left < right) { while(left<right && arr[right] > tmp)//左右邊界沒有相遇且當前右邊的值大於基準值tmp right--; if(left < right)//如果此時,左右邊界沒有相遇,那就只能證明右邊right找到了一個小於等於基準值tmp的值 { arr[left] = arr[right]; } else { break; } while(left<right && arr[left] <= tmp)//左右邊界沒有相遇且當前左邊的值小於等於基準值tmp left++; if(left < right)//如果此時,左右邊界沒有相遇,那就只能證明左邊left找到了一個大於基準值tmp的值 { arr[right] = arr[left]; } else { break; } } arr[left] = tmp;//此時 因為 left == right return left;//return right ok } void Quick(int *arr, int left, int right) { if(left < right)//通過left <right 保證[left, right]這個範圍內至少兩個資料 { int par = Partition(arr, left, right); if(left < par-1)//基準值左半部分 至少有兩個值才有必要去遞迴 { Quick(arr, left, par-1); } if(par+1 < right)//基準值右半部分 至少有兩個值才有必要去遞迴 { Quick(arr, par+1, right); } } } void QuickSort(int *arr, int len) { Quick(arr, 0, len-1); }
越亂越快,越有序越慢
時間複雜度:
最優情況:O(nlogn)每次資料元素都能平均的分成兩個部分。得到一個完全二元樹;
最壞情況: O(n^2)這個數僅有右子樹或左子樹,比較次數為 (n-1)+(n-2) + (n-3) + … +1=n*(n-1)/2 ;
平均情況:O(nlogn)。
空間複雜度:O(1)。
穩定性:因為關鍵字的比較和交換是跳躍進行的,會改變資料元素的相對位置;因此,快速排序是一種不穩定的排序方法,但是也是內排序中平均效率最高的排序演演算法。
(小白一位,如有錯誤歡迎指正)
到此這篇關於C語言簡明講解快速排序的應用的文章就介紹到這了,更多相關C語言快速排序內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45