一个快速排序算法代码分享_C语言教程-查字典教程网
一个快速排序算法代码分享
一个快速排序算法代码分享
发布时间:2016-12-28 来源:查字典编辑
摘要:复制代码代码如下:/**quickSort.c**Createdon:2012-4-9*Author:LW*/#include#includ...

复制代码 代码如下:

/*

* 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[]是需要进行排序的数组,length是students数组的元素个数

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");

//为分区选好分裂点

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 中轴下标:%dn",flag,j);

//进行分区并对分区进行递归调用quickSort,在原数组空间里进行操作

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 %st",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 %st",students[i].id,students[i].name);

if(!((i+1)%5))

{

printf("n");

}

}

return 0;

}

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新C语言学习
    热门C语言学习
    编程开发子分类