C語言數(shù)據(jù)結(jié)構(gòu) 快速排序?qū)嵗斀?/h1>
更新時(shí)間:2017年08月02日 15:53:46 投稿:lqh
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu) 快速排序?qū)嵗斀獾南嚓P(guān)資料,快速排序采用分治的思想,兩邊數(shù)據(jù)進(jìn)行排序,需要的朋友可以參考下
C語言數(shù)據(jù)結(jié)構(gòu) 快速排序?qū)嵗斀?/strong>
一、快速排序簡介
快速排序采用分治的思想,第一趟先將一串?dāng)?shù)字分為兩部分,第一部分的數(shù)值都比第二部分要小,然后按照這種方法,依次對兩邊的數(shù)據(jù)進(jìn)行排序。
二、代碼實(shí)現(xiàn)
#include <stdio.h>
/* 將兩個(gè)數(shù)據(jù)交換 */
void swap(int* Ina , int* Inb)
{
int temp = *Ina;
*Ina = *Inb;
*Inb = temp;
}
/* 進(jìn)行一趟的快速排序,把一個(gè)序列分為兩個(gè)部分 */
int getPartion(int* InArry,int InBegin,int InEnd)
{
/* 剛開始的分隔線是第一個(gè) */
int part = InBegin;
int index = 0;
if(InEnd >= InBegin)
{
part = InBegin;
for(index = InBegin+1; index <= InEnd; index++)
{
if(InArry[InBegin] >= InArry[index])
{
/* 交換位置 */
swap(&InArry[part+1],&InArry[index]);
part++;
}
}
/* 把第一個(gè)數(shù)放到part處去 */
swap(&InArry[InBegin],&InArry[part]);
return part;
}
}
/* 快速排序函數(shù)
* InArry:輸入的數(shù)組
* InBegin:數(shù)組的開始
* InEnd:數(shù)組的結(jié)束
*/
void quickSort(int* InArry,int InBegin,int InEnd)
{
if(InArry == NULL || InEnd <= InBegin)
{
return;
}
int part = 0;
part = getPartion(InArry,InBegin,InEnd);
/* 遞歸調(diào)用 */
quickSort(InArry,0,part-1);
quickSort(InArry,part+1,InEnd);
}
int main()
{
int a[] = {49,38,65,97,76,13,27};
int index = 0;
int len = sizeof(a)/sizeof(int);
/* 先遍歷打印一下數(shù)組的元素 */
for(index = 0; index < len; index++)
{
printf("%d ",a[index]);
}
printf("\n");
/* 調(diào)用快速排序函數(shù) */
quickSort(a,0,len-1);
/* 再遍歷打印一下數(shù)組的元素 */
for(index = 0; index < len; index++)
{
printf("%d ",a[index]);
}
printf("\n");
return 0;
}
以上就是使用C語言數(shù)據(jù)結(jié)構(gòu) 快速排序的實(shí)例詳解,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站 的支持!
相關(guān)文章
-
c/c++ 利用sscanf進(jìn)行數(shù)據(jù)拆分操作
這篇文章主要介紹了c/c++ 利用sscanf進(jìn)行數(shù)據(jù)拆分操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧 2020-12-12
-
C++使struct對象擁有可變大小的數(shù)組(詳解)
下面小編就為大家?guī)硪黄狢++使struct對象擁有可變大小的數(shù)組(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧 2016-12-12
-
sublime text3搭建配置c語言編譯環(huán)境的詳細(xì)圖解教程(小白級)
這篇文章主要介紹了sublime text3搭建配置c語言編譯環(huán)境,詳細(xì)圖解,小白教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下 2023-01-01
-
詳解C++ 多態(tài)的實(shí)現(xiàn)及原理
這篇文章主要介紹了C++ 多態(tài)的實(shí)現(xiàn)及原理,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下 2019-05-05
-
Windows系統(tǒng)下使用C語言編寫單線程的文件備份程序
這篇文章主要介紹了Windows系統(tǒng)下使用C語言編寫單線程的文件備份程序,文中給出了實(shí)現(xiàn)的幾個(gè)關(guān)鍵代碼片段,剩下的只要套上main和線程調(diào)用的相關(guān)函數(shù)即可,非常詳細(xì),需要的朋友可以參考下 2016-02-02
-
C語言中socket相關(guān)網(wǎng)絡(luò)編程函數(shù)小結(jié)
這篇文章主要介紹了C語言中socket相關(guān)網(wǎng)絡(luò)編程函數(shù)小結(jié),是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下 2015-09-09
-
C語言鏈表實(shí)現(xiàn)學(xué)生成績管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言鏈表實(shí)現(xiàn)學(xué)生成績管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下 2022-07-07
最新評論
C語言數(shù)據(jù)結(jié)構(gòu) 快速排序?qū)嵗斀?/strong>
一、快速排序簡介
快速排序采用分治的思想,第一趟先將一串?dāng)?shù)字分為兩部分,第一部分的數(shù)值都比第二部分要小,然后按照這種方法,依次對兩邊的數(shù)據(jù)進(jìn)行排序。
二、代碼實(shí)現(xiàn)
#include <stdio.h> /* 將兩個(gè)數(shù)據(jù)交換 */ void swap(int* Ina , int* Inb) { int temp = *Ina; *Ina = *Inb; *Inb = temp; } /* 進(jìn)行一趟的快速排序,把一個(gè)序列分為兩個(gè)部分 */ int getPartion(int* InArry,int InBegin,int InEnd) { /* 剛開始的分隔線是第一個(gè) */ int part = InBegin; int index = 0; if(InEnd >= InBegin) { part = InBegin; for(index = InBegin+1; index <= InEnd; index++) { if(InArry[InBegin] >= InArry[index]) { /* 交換位置 */ swap(&InArry[part+1],&InArry[index]); part++; } } /* 把第一個(gè)數(shù)放到part處去 */ swap(&InArry[InBegin],&InArry[part]); return part; } } /* 快速排序函數(shù) * InArry:輸入的數(shù)組 * InBegin:數(shù)組的開始 * InEnd:數(shù)組的結(jié)束 */ void quickSort(int* InArry,int InBegin,int InEnd) { if(InArry == NULL || InEnd <= InBegin) { return; } int part = 0; part = getPartion(InArry,InBegin,InEnd); /* 遞歸調(diào)用 */ quickSort(InArry,0,part-1); quickSort(InArry,part+1,InEnd); } int main() { int a[] = {49,38,65,97,76,13,27}; int index = 0; int len = sizeof(a)/sizeof(int); /* 先遍歷打印一下數(shù)組的元素 */ for(index = 0; index < len; index++) { printf("%d ",a[index]); } printf("\n"); /* 調(diào)用快速排序函數(shù) */ quickSort(a,0,len-1); /* 再遍歷打印一下數(shù)組的元素 */ for(index = 0; index < len; index++) { printf("%d ",a[index]); } printf("\n"); return 0; }
以上就是使用C語言數(shù)據(jù)結(jié)構(gòu) 快速排序的實(shí)例詳解,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站 的支持!
相關(guān)文章
c/c++ 利用sscanf進(jìn)行數(shù)據(jù)拆分操作
這篇文章主要介紹了c/c++ 利用sscanf進(jìn)行數(shù)據(jù)拆分操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12C++使struct對象擁有可變大小的數(shù)組(詳解)
下面小編就為大家?guī)硪黄狢++使struct對象擁有可變大小的數(shù)組(詳解)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12sublime text3搭建配置c語言編譯環(huán)境的詳細(xì)圖解教程(小白級)
這篇文章主要介紹了sublime text3搭建配置c語言編譯環(huán)境,詳細(xì)圖解,小白教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01詳解C++ 多態(tài)的實(shí)現(xiàn)及原理
這篇文章主要介紹了C++ 多態(tài)的實(shí)現(xiàn)及原理,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05Windows系統(tǒng)下使用C語言編寫單線程的文件備份程序
這篇文章主要介紹了Windows系統(tǒng)下使用C語言編寫單線程的文件備份程序,文中給出了實(shí)現(xiàn)的幾個(gè)關(guān)鍵代碼片段,剩下的只要套上main和線程調(diào)用的相關(guān)函數(shù)即可,非常詳細(xì),需要的朋友可以參考下2016-02-02C語言中socket相關(guān)網(wǎng)絡(luò)編程函數(shù)小結(jié)
這篇文章主要介紹了C語言中socket相關(guān)網(wǎng)絡(luò)編程函數(shù)小結(jié),是C語言入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-09-09C語言鏈表實(shí)現(xiàn)學(xué)生成績管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言鏈表實(shí)現(xiàn)學(xué)生成績管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07