C語言數(shù)據(jù)結(jié)構(gòu) 快速排序?qū)嵗斀?/h1>
來源:本站原創(chuàng)|時間:2020-01-10|欄目:C語言|點擊: 次
C語言數(shù)據(jù)結(jié)構(gòu) 快速排序?qū)嵗斀?/strong>
一、快速排序簡介
快速排序采用分治的思想,第一趟先將一串?dāng)?shù)字分為兩部分,第一部分的數(shù)值都比第二部分要小,然后按照這種方法,依次對兩邊的數(shù)據(jù)進行排序。
二、代碼實現(xiàn)
#include <stdio.h>
/* 將兩個數(shù)據(jù)交換 */
void swap(int* Ina , int* Inb)
{
int temp = *Ina;
*Ina = *Inb;
*Inb = temp;
}
/* 進行一趟的快速排序,把一個序列分為兩個部分 */
int getPartion(int* InArry,int InBegin,int InEnd)
{
/* 剛開始的分隔線是第一個 */
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++;
}
}
/* 把第一個數(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) 快速排序的實例詳解,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站 的支持!
C語言數(shù)據(jù)結(jié)構(gòu) 快速排序?qū)嵗斀?/strong>
一、快速排序簡介
快速排序采用分治的思想,第一趟先將一串?dāng)?shù)字分為兩部分,第一部分的數(shù)值都比第二部分要小,然后按照這種方法,依次對兩邊的數(shù)據(jù)進行排序。
二、代碼實現(xiàn)
#include <stdio.h> /* 將兩個數(shù)據(jù)交換 */ void swap(int* Ina , int* Inb) { int temp = *Ina; *Ina = *Inb; *Inb = temp; } /* 進行一趟的快速排序,把一個序列分為兩個部分 */ int getPartion(int* InArry,int InBegin,int InEnd) { /* 剛開始的分隔線是第一個 */ 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++; } } /* 把第一個數(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) 快速排序的實例詳解,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站 的支持!
欄 目:C語言
下一篇:C語言實現(xiàn)斐波那契數(shù)列(非遞歸)的實例講解
本文標題:C語言數(shù)據(jù)結(jié)構(gòu) 快速排序?qū)嵗斀?/a>
本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/1298.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對數(shù)怎么表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對數(shù)函數(shù)的表達式 c語言中對
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機閱讀
- 01-10C#中split用法實例總結(jié)
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10delphi制作wav文件的方法
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-11ajax實現(xiàn)頁面的局部加載
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 04-02jquery與jsp,用jquery