简单选择排序和堆排序问题写了一个程序用WIN-TC编译老有错误,希望高手帮忙改下,在线等#include #include #include #define datatype int void SelectSort(datatype R[],int n) { int i,k,j; for(i=1;i

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 02:20:31

简单选择排序和堆排序问题写了一个程序用WIN-TC编译老有错误,希望高手帮忙改下,在线等#include #include #include #define datatype int void SelectSort(datatype R[],int n) { int i,k,j; for(i=1;i
简单选择排序和堆排序问题
写了一个程序用WIN-TC编译老有错误,希望高手帮忙改下,在线等
#include
#include
#include
#define datatype int
void SelectSort(datatype R[],int n)
{
int i,k,j;
for(i=1;i

简单选择排序和堆排序问题写了一个程序用WIN-TC编译老有错误,希望高手帮忙改下,在线等#include #include #include #define datatype int void SelectSort(datatype R[],int n) { int i,k,j; for(i=1;i
你那个叫归并排序,我三个都写给你:
#include
#include
void swap(int* a,int* b)
{
int t;
t = *a; *a = *b; *b = t;
}
void show(char* s,int* a,int* b)
{
printf(s);
while(a != b)
printf("%d ",*a++);
putchar('\n');
}
void select_sort(int a[],int n)
{
int i,j,m;
for(i = 0; i < n; ++i) {
m = i;
for(j = i; j < n; ++j)
if(a[m] > a[j])
m = j;
swap(a+i,a+m);
}
}
void merge(int a[],int m,int n)
{
static int s[256];
int i,j,k;
for(i = k = 0,j = m; i < m && j < n;)
if(a[i] > a[j])
s[k++] = a[i++];
else
s[k++] = a[j++];
if(i == m)
i = j,j = n;
else
j = m;
while(i < j)
s[k++] = a[i++];
for(i = 0; i < n; ++i)
a[i] = s[i];
}
void merge_sort(int a[],int n)
{
int m;
if(n < 2)
return;
m = n/2;
merge_sort(a,m);
merge_sort(a+m,n-m);
merge(a,m,n);
}
void heapify(int a[],int i,int n)
{
int l,r,m;
while(1) {
r = (i + 1)*2;
l = r - 1;
m = l < n && a[l] > a[i] l :i;
m = r < n && a[r] > a[m] r :m;
if(m != i)
swap(a+i,a+m),i = m;
else break;
}
}
void heap_sort(int a[],int n)
{
int i;
for(i = (n-1)/2; i >= 0; --i)
heapify(a,i,n);
for(i = n-1; i > 0; --i) {
swap(a,a+i);
heapify(a,0,--n);
}
}
int main()
{
int a[] = {6,1,3,8,4,0,9,7,5,2};
select_sort(a,10);
show("选择排序:\t",a,a+10);
merge_sort(a,10);
show("归并排序:\t",a,a+10);
heap_sort(a,10);
show("堆排序:\t\t",a,a+10);
return 0;
}

简单选择排序和堆排序问题写了一个程序用WIN-TC编译老有错误,希望高手帮忙改下,在线等#include #include #include #define datatype int void SelectSort(datatype R[],int n) { int i,k,j; for(i=1;i 26个字母排序和组合如题写一段程序 用c#编写一个冒泡法排序的程序新建一个控制台应用程序,实现冒泡排序和选择排序算法,要求程序可以接收一组整数的输入,输出为排序后的结果.要求程序可以接受一组整数的输入,输出为排序 关于选择排序和堆排序为什么说选择排序中比较的次数与初始的顺序无关而堆排序与初始顺序有关? 急,简单选择排序题写出下列序列每趟简单选择排序的结果:70.83.100.65.10.32.7.9. 下列排序方法中,最坏情况下比较次数最少的是()为什么 A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆 下列排序方法中,最坏情况下比较次数最少的是 A)冒泡排序B)简单选择排序C)直接插入排序D)堆排序E快速排序 c语言的一个和选择排序法有关的问题选择排序法为什么不能直接简化为下面这段程序?for(i=0;i 下列关于排序的说法正确的是( ).A.插入排序和冒泡排序都是稳定的排序算法.B.选择排序的平均时间复杂度为O(n2).C.选择排序、快速排序、希尔排序、堆排序都是不稳定的排序算法.D.希尔排 分别用选择排序、冒泡排序和插入排序对下列数字从小到大排列:6,2,47,9,35,18,请画出排序过程.注意是过程不是程序 排序技术中 冒泡法和快速排序法的最坏情况下的比较次数是多少 其时间复杂度分别是多少插入排序 希尔排序 选择排序 堆排序 他们的时间复杂度是多少 利用随机函数产生30000个随机整数,利用插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序等排序方法进行排序,并统计每一种排序上机所花费的时间. 简单选择排序概念是什么?如题 待排序序列(46,84,56,40,38,79) 第一轮处理后(40,38,46,56,84,79) 请问采用的排序算法是什么如题.4个备选答案:简单选择、简单插入、快速、堆排序 选择排序法和冒泡排序法详解 冒泡排序和选择排序有什么区别, Java中冒泡排序和选择排序有什么不同? 数据结构的堆排序和初始堆的概念...我被搞懵了...他们有什么不同..比如说(46,79,56,38,40,84)它的初始堆是什么,堆排序后又是什么,最好给个排序的过程...thanks