A quick sort algorithm code sharing
- 2020-04-02 02:09:28
- OfStack
#include <stdio.h>
#include <string.h>
typedef struct _student
{
int id;
char name[30];
}student,*pStudent;
student students[20] =
{
{13," The fox gold "},{15," Ten niangs "},{8," The gourd Eva "},{4," Pleasant goat "},
{14," Jingle cats "},{18," The Monkey King "},{3," gulliver "},{6," Coffee cat "},
{19," Pig eight quit "},{11," The programmer "},{5," Robinson "},{9," tuna "},
{10," careless "},{12," Week star "},{1," Wolffy "},{2," Donald Duck "},
{20," False gentleman "},{16," In jun "},{7," xiao "},{17," Jia baoyu "},
};
//Students [] is an array to sort, and length is the number of elements in the students array
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");
//Select the split point for the partition
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);
}
//Print sort process
for(t=0;t<length;t++)
{
printf("%d ",students[t].id);
}
printf("---- After ordering n----------------------------------- Axis: %d Central axis subscript: %dn",flag,j);
//Partition and recursively call quickSort on the partition, operating in the original array space
quickSort(&students[0],j+1);
quickSort(&students[j+1],length-j-1);
}
}
int main()
{
int i;
//Pre-sort printing
printf(" Before ordering: 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);
//Sort print
printf("__________________________________________________________________n After the order: n");
for(i=0;i<20;i++)
{
printf("%d %st",students[i].id,students[i].name);
if(!((i+1)%5))
{
printf("n");
}
}
return 0;
}