刺客和战士:C语言排序的方法

来源:百度文库 编辑:高考问答 时间:2024/04/29 04:34:10
C语言有几种排序法?

何为C语言的选择法排序?

给我写个选择法的实例 谢谢
数组排序

现在流行的排序有:直接插入排序、冒泡排序、简单选择排序、希尔排序、快速排序、堆排序、归并排序、基数排序。

对n个记录进行选择排序的方法是:通过n-i次关键字之间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录进行交换,当i等于n时所有记录都已有序排列。

void selectsort(int data[],int n)
{
int i,j,k,temp;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
{
if(data[j]<data[k]) k=j;
if(k!=i)
{
temp=data[i];data[i]=data[k];data[k]=temp;
}//if
}//for
}//for
}//selectsort

第一次选最小的放在第一个位置。
然后再从第二个位置开始找最小的方到第二个位置,(显然是整个数组第二小的)

然后再从第i个位置。。。。。。。。。。i。。。。
伪代码如下:

//设数组为p,大小为n
void sort()
{
int i,j,t;
for(i=0 ; i<n ; i++)
{
int min=i;
for(j=i+1 ; j<n ; j++)
{
if(p[j]<p[min])
min=j;
}
//把p[min]放置到第i个位置,其实就是一个交换的过程;
t=p[i];
p[i]=p[min];
p[min]=t;
}

}

1 直接插入排序 2 希而排序 3 冒泡排序 4快速排序 5堆排序 6合并排序 7基数排序 8外排序