C語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 快速排序?qū)嵗斀?/h1>
更新時(shí)間:2017年08月02日 15:53:46 投稿:lqh
這篇文章主要介紹了C語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 快速排序?qū)嵗斀獾南嚓P(guān)資料,快速排序采用分治的思想,兩邊數(shù)據(jù)進(jìn)行排序,需要的朋友可以參考下
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 快速排序?qū)嵗斀?/strong>
一、快速排序簡(jiǎn)介
快速排序采用分治的思想,第一趟先將一串?dāng)?shù)字分為兩部分,第一部分的數(shù)值都比第二部分要小,然后按照這種方法,依次對(duì)兩邊的數(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語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 快速排序的實(shí)例詳解,如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站 的支持!
您可能感興趣的文章:- c語(yǔ)言快速排序算法示例代碼分享
- C語(yǔ)言實(shí)現(xiàn)選擇排序、冒泡排序和快速排序的代碼示例
- 用c語(yǔ)言實(shí)現(xiàn)冒泡排序,選擇排序,快速排序
- C語(yǔ)言簡(jiǎn)單實(shí)現(xiàn)快速排序
- C語(yǔ)言快速排序函數(shù)用法(qsort)
- C語(yǔ)言實(shí)現(xiàn)快速排序算法
- C語(yǔ)言的冒泡排序和快速排序算法使用實(shí)例
- C語(yǔ)言中快速排序和插入排序優(yōu)化的實(shí)現(xiàn)
- C語(yǔ)言實(shí)現(xiàn)快速排序
- C語(yǔ)言實(shí)現(xiàn)快速排序算法實(shí)例
相關(guān)文章
-
c/c++ 利用sscanf進(jìn)行數(shù)據(jù)拆分操作
這篇文章主要介紹了c/c++ 利用sscanf進(jìn)行數(shù)據(jù)拆分操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧 2020-12-12
-
C++使struct對(duì)象擁有可變大小的數(shù)組(詳解)
下面小編就為大家?guī)?lái)一篇C++使struct對(duì)象擁有可變大小的數(shù)組(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧 2016-12-12
-
sublime text3搭建配置c語(yǔ)言編譯環(huán)境的詳細(xì)圖解教程(小白級(jí))
這篇文章主要介紹了sublime text3搭建配置c語(yǔ)言編譯環(huán)境,詳細(xì)圖解,小白教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下 2023-01-01
-
詳解C++ 多態(tài)的實(shí)現(xiàn)及原理
這篇文章主要介紹了C++ 多態(tài)的實(shí)現(xiàn)及原理,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下 2019-05-05
-
Windows系統(tǒng)下使用C語(yǔ)言編寫單線程的文件備份程序
這篇文章主要介紹了Windows系統(tǒng)下使用C語(yǔ)言編寫單線程的文件備份程序,文中給出了實(shí)現(xiàn)的幾個(gè)關(guān)鍵代碼片段,剩下的只要套上main和線程調(diào)用的相關(guān)函數(shù)即可,非常詳細(xì),需要的朋友可以參考下 2016-02-02
-
C語(yǔ)言中socket相關(guān)網(wǎng)絡(luò)編程函數(shù)小結(jié)
這篇文章主要介紹了C語(yǔ)言中socket相關(guān)網(wǎng)絡(luò)編程函數(shù)小結(jié),是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下 2015-09-09
-
C語(yǔ)言鏈表實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言鏈表實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下 2022-07-07
-
C語(yǔ)言的變量與常量 字符字符串與轉(zhuǎn)義字符詳解
這篇文章主要介紹了詳解C語(yǔ)言的變量與常量 字符字符串與轉(zhuǎn)義字符,包括其之間的區(qū)別是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下 2021-10-10
-
C語(yǔ)言實(shí)現(xiàn)一個(gè)閃爍的圣誕樹
本文詳細(xì)講解了C語(yǔ)言實(shí)現(xiàn)一個(gè)閃爍的圣誕樹,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下 2021-12-12
最新評(píng)論
C語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 快速排序?qū)嵗斀?/strong>
一、快速排序簡(jiǎn)介
快速排序采用分治的思想,第一趟先將一串?dāng)?shù)字分為兩部分,第一部分的數(shù)值都比第二部分要小,然后按照這種方法,依次對(duì)兩邊的數(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語(yǔ)言數(shù)據(jù)結(jié)構(gòu) 快速排序的實(shí)例詳解,如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站 的支持!
- c語(yǔ)言快速排序算法示例代碼分享
- C語(yǔ)言實(shí)現(xiàn)選擇排序、冒泡排序和快速排序的代碼示例
- 用c語(yǔ)言實(shí)現(xiàn)冒泡排序,選擇排序,快速排序
- C語(yǔ)言簡(jiǎn)單實(shí)現(xiàn)快速排序
- C語(yǔ)言快速排序函數(shù)用法(qsort)
- C語(yǔ)言實(shí)現(xiàn)快速排序算法
- C語(yǔ)言的冒泡排序和快速排序算法使用實(shí)例
- C語(yǔ)言中快速排序和插入排序優(yōu)化的實(shí)現(xiàn)
- C語(yǔ)言實(shí)現(xiàn)快速排序
- C語(yǔ)言實(shí)現(xiàn)快速排序算法實(shí)例
相關(guān)文章
c/c++ 利用sscanf進(jìn)行數(shù)據(jù)拆分操作
這篇文章主要介紹了c/c++ 利用sscanf進(jìn)行數(shù)據(jù)拆分操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-12-12
C++使struct對(duì)象擁有可變大小的數(shù)組(詳解)
下面小編就為大家?guī)?lái)一篇C++使struct對(duì)象擁有可變大小的數(shù)組(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12
sublime text3搭建配置c語(yǔ)言編譯環(huán)境的詳細(xì)圖解教程(小白級(jí))
這篇文章主要介紹了sublime text3搭建配置c語(yǔ)言編譯環(huán)境,詳細(xì)圖解,小白教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01
詳解C++ 多態(tài)的實(shí)現(xiàn)及原理
這篇文章主要介紹了C++ 多態(tài)的實(shí)現(xiàn)及原理,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05
Windows系統(tǒng)下使用C語(yǔ)言編寫單線程的文件備份程序
這篇文章主要介紹了Windows系統(tǒng)下使用C語(yǔ)言編寫單線程的文件備份程序,文中給出了實(shí)現(xiàn)的幾個(gè)關(guān)鍵代碼片段,剩下的只要套上main和線程調(diào)用的相關(guān)函數(shù)即可,非常詳細(xì),需要的朋友可以參考下2016-02-02
C語(yǔ)言中socket相關(guān)網(wǎng)絡(luò)編程函數(shù)小結(jié)
這篇文章主要介紹了C語(yǔ)言中socket相關(guān)網(wǎng)絡(luò)編程函數(shù)小結(jié),是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-09-09
C語(yǔ)言鏈表實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言鏈表實(shí)現(xiàn)學(xué)生成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
C語(yǔ)言的變量與常量 字符字符串與轉(zhuǎn)義字符詳解
這篇文章主要介紹了詳解C語(yǔ)言的變量與常量 字符字符串與轉(zhuǎn)義字符,包括其之間的區(qū)別是C語(yǔ)言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2021-10-10
C語(yǔ)言實(shí)現(xiàn)一個(gè)閃爍的圣誕樹
本文詳細(xì)講解了C語(yǔ)言實(shí)現(xiàn)一個(gè)閃爍的圣誕樹,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12

