C語言簡(jiǎn)單實(shí)現(xiàn)快速排序
快速排序是一種不穩(wěn)定排序,它的時(shí)間復(fù)雜度為O(n·lgn),最壞情況為O(n2);空間復(fù)雜度為O(n·lgn)。
這種排序方式是對(duì)于冒泡排序的一種改進(jìn),它采用分治模式,將一趟排序的數(shù)據(jù)分割成獨(dú)立的兩部分,其中一組數(shù)據(jù)的每個(gè)值都小于另一組。每一趟在進(jìn)行分類的同時(shí)實(shí)現(xiàn)排序。
其中每一趟的模式通過設(shè)置key當(dāng)基準(zhǔn)元素,key的選擇可以是數(shù)據(jù)的第一個(gè),也可以是數(shù)據(jù)的最后一個(gè)。這里以每次選取數(shù)據(jù)的第一個(gè)為例:
具體代碼實(shí)現(xiàn):
#include<stdio.h> #define N 6 int fun(int arr[],int low,int high) { int key; key=arr[low]; while(low<high) { while(low<high && arr[high]>=key) high--; if(low<high) arr[low++]=arr[high]; while(low<high && arr[low]<=key) low++; if(low<high) arr[high--]=arr[low]; } arr[low]=key; return low; } void quick_sort(int arr[],int start,int end) { int pos; if(start<end) { pos=fun(arr,start,end); quick_sort(arr,start,pos-1); quick_sort(arr,pos+1,end); } } int main() { int i; int arr[N]={32,12,7,78,23,45}; for(i=0;i<N;i++) { printf("%d ",arr[i]); } printf("\n"); quick_sort(arr,0,N-1); for(i=0;i<N;i++) { printf("%d ",arr[i]); } return 0; }
由于是第一次撰寫博客,許多地方?jīng)]有一個(gè)良好的習(xí)慣,還請(qǐng)讀者見諒。創(chuàng)建這個(gè)博客的目的實(shí)際上是為了讓自己對(duì)于數(shù)據(jù)結(jié)構(gòu)與算法加深印象,通過博客的形式展現(xiàn)出來一方面方便自己查閱,另一方面以希望能夠通過自己的微薄之力幫助到有需要的朋友。
也希望自己能夠堅(jiān)持下去,認(rèn)真的去做這么一件事。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C基礎(chǔ) mariadb處理的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)硪黄狢基礎(chǔ) mariadb處理的簡(jiǎn)單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06C++實(shí)現(xiàn)圖書管理系統(tǒng)源碼
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)圖書管理系統(tǒng)源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03C++利用多態(tài)實(shí)現(xiàn)職工管理系統(tǒng)(項(xiàng)目開發(fā))
這篇文章主要介紹了C++利用多態(tài)實(shí)現(xiàn)職工管理系統(tǒng)(項(xiàng)目開發(fā)),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01C++ 輕量級(jí)對(duì)象JSON序列化實(shí)現(xiàn)詳情
本文以jsoncpp庫為基礎(chǔ),設(shè)計(jì)這樣一個(gè)可以支持一個(gè)函數(shù) 可以一行代碼 unmarshal /marshal 對(duì)象,需要的朋友小伙伴可以參考以下2021-09-09C語言中g(shù)etopt()函數(shù)和select()函數(shù)的使用方法
這篇文章主要介紹了C語言中g(shù)etopt()函數(shù)和select()函數(shù)的使用方法,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09C語言時(shí)間函數(shù)之strftime()詳解
這篇文章主要為大家詳細(xì)介紹了C語言時(shí)間函數(shù)之strftime(),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-02-02關(guān)于Qt添加opencv和libtorch庫的問題
這篇文章主要介紹了Qt添加opencv和libtorch庫的相關(guān)知識(shí),兩種方法一種是通過手動(dòng)添加,一種是通過qt creator添加,需要的朋友可以參考下2022-01-01