裸求C语言的各种排序算法,插入法,选择法,2分查找法,快速排序法,
发布网友
发布时间:2022-05-29 08:12
我来回答
共2个回答
热心网友
时间:2023-10-12 08:15
//***********************直接插入法**********************************/
# include <stdio.h>
#define Max 15
main()
{
int a[Max],i,j,t;
int length = Max-1;
printf("请输入待排序的%d个记录:",length);
for(i=0;i<length;i++)
scanf("%d",&a[i]);
for(i=1;i<length;i++) /*外循环控制趟数,n个数从第2个数开始到最后共进行n-1次插入*/
{
t=a[i]; /*将待插入数暂存于变量t中*/
for( j=i-1 ; j>=0 && t>a[j] ; j-- ) /*在有序序列(下标0 ~ i-1)中寻找插入位置*/
a[j+1]=a[j]; /*若未找到插入位置,则当前元素后移一个位置*/
a[j+1]=t; /*找到插入位置,完成插入*/
}
printf("直接插入排序后的序列:");
for(i=0;i<length;i++)
printf("%d ",a[i]);
printf("\n");
}
//***********************快速排序**********************************/
# include <stdio.h>#define Max 5
int partions(int a[],int low,int high)
{
int prvotkey=a[low];
a[0]=a[low];
while (low<high)
{
while(low<high&&a[high]>=prvotkey)
--high;
a[low]=a[high];
while (low<high&&a[low]<=prvotkey)
++low;
a[high]=a[low];
}
a[low]=a[0];
return low;
}
void qsort(int a[],int low,int high)
{
int prvotloc;
if(low<high)
{
prvotloc=partions(a,low,high); //将第一次排序的结果作为枢轴
qsort(a,low,prvotloc-1); //递归调用排序 由low 到prvotloc-1
qsort(a,prvotloc+1,high); //递归调用排序 由 prvotloc+1到 high
}
}
void quick_sort(int a[],int n)
{
qsort(a,1,n); //第一个作为枢轴 ,从第一个排到第n个
}
main( )
{
int a[Max],i;
int length = Max-1;
printf(" 这是一个快速排序 \n");
printf("请输入%d个待排序的记录序列:\n",length);
for(i=1;i<length;i++)
scanf("%d",&a[i]);
quick_sort(a,length);
printf("快速排序后的序列:");
for(i=0;i<length;i++)
printf(" %d",a[i]);
printf("\n");
}
手头上只有这两个暂时,其它的排序算法书上都有,主函数的部分基本都一样的,把函数调用部分改一下都可以啦!
热心网友
时间:2023-10-12 08:15
这个,书本上没有吗追问没找到,什么书,谭浩强那本没有
追答李文书