一個快速排序算法代碼分享
/*
* quickSort.c
*
* Created on: 2012-4-9
* Author: LW
*/
#include <stdio.h>
#include <string.h>
typedef struct _student
{
int id;
char name[30];
}student,*pStudent;
student students[20] =
{
{13,"狐貍金"},{15,"杜十娘"},{8,"葫蘆娃"},{4,"喜羊羊"},
{14,"叮當貓"},{18,"孫悟空"},{3,"格列佛"},{6,"咖啡貓"},
{19,"豬八戒"},{11,"程序員"},{5,"魯濱遜"},{9,"金槍魚"},
{10,"馬大哈"},{12,"周星星"},{1,"灰太狼"},{2,"唐老鴨"},
{20,"子虛君"},{16,"烏有君"},{7,"小二郎"},{17,"賈寶玉"},
};
//students[]是需要進行排序的數(shù)組,length是students數(shù)組的元素個數(shù)
void quickSort(student students[],int length)
{
int i,j,flag = students[0].id;
student stutemp;
int t;
if(length>1)
{
for(t=0;t<length;t++)
{
printf("%d ",students[t].id);
}
printf("\n");
//為分區(qū)選好分裂點
for(i=0,j=length-1;i<j;)
{
for(;students[i].id<flag;i++);
for(;students[j].id>flag;j--);
stutemp.id = students[j].id;
strcpy(stutemp.name,students[j].name);
students[j].id = students[i].id;
strcpy(students[j].name,students[i].name);
students[i].id = stutemp.id;
strcpy(students[i].name,stutemp.name);
}
//打印排序過程
for(t=0;t<length;t++)
{
printf("%d ",students[t].id);
}
printf("----排序后\n-----------------------------------中軸:%d 中軸下標:%d\n",flag,j);
//進行分區(qū)并對分區(qū)進行遞歸調(diào)用quickSort,在原數(shù)組空間里進行操作
quickSort(&students[0],j+1);
quickSort(&students[j+1],length-j-1);
}
}
int main()
{
int i;
//排序前打印
printf("排序前:\n");
for(i=0;i<20;i++)
{
printf("%d %s\t",students[i].id,students[i].name);
if(!((i+1)%5))
{
printf("\n");
}
}
quickSort(students,20);
//排序后打印
printf("__________________________________________________________________\n排序后:\n");
for(i=0;i<20;i++)
{
printf("%d %s\t",students[i].id,students[i].name);
if(!((i+1)%5))
{
printf("\n");
}
}
return 0;
}
您可能感興趣的文章


閱讀排行
本欄相關
- 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ù)求
隨機閱讀
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-10C#中split用法實例總結(jié)
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10delphi制作wav文件的方法
- 01-10SublimeText編譯C開發(fā)環(huán)境設置
- 01-11ajax實現(xiàn)頁面的局部加載
- 04-02jquery與jsp,用jquery
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10使用C語言求解撲克牌的順子及n個骰子