求数据结构课程设计(C语言)—排序综合!利用随机函数产生N个随机整数(2万以上),至少使用三种方法实现 5

提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序... 提示,可采用的方法有插入排序、希尔排序、起泡排序、快速排序、选择排序、堆排序、归并排序 展开
 我来答
wangshengdi888
推荐于2018-04-09 · TA获得超过2114个赞
知道小有建树答主
回答量:1236
采纳率:0%
帮助的人:588万
展开全部
冒泡法
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10000
void init_array(int a[N],int n)
{
int i;
srand(time(NULL));
for(i=0;i<n;i++){
a[i]=rand()%N;
}
}
void sort(int a[N],int n)
{
int i,j;
int t;
for(i=0;i<n;i++){//这个循环说明要循环N次 每循环一个把最大的放最后
for(j=0;j<n-1-i;j++){//这里的循环时把相邻的2数比较 交换 交换到承认后面的数最大
if(a[j]>a[j+1]){
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
}
}
void display(int a[N],int n)
{
int i;
for(i=0;i<n;i++){
printf("%d\n",a[i]);
}
}
int main()
{
int array[N];
init_array(array,N);
sort(array,N);
display(array,N);
return 0;
}

快速排序
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 100240
int small_array[N];
int big_array[N];
void my_list(int a[],int n)
{
int i;
srand(time(NULL));
for(i=0;i<n;i++)
a[i]=rand()%n;
}
int my_quick(int a[],int start,int end)
{
int i,eq;
int small_count=0,big_count=0;
eq=a[start];
if(start>=end) return;
for(i=start+1;i<=end;i++){
if(a[i]<eq){
small_array[small_count]=a[i];
small_count++;
}
else{
big_array[big_count]=a[i];
big_count++;
}
}
for(i=0;i<small_count;i++)
a[start+i]=small_array[i];
a[start+small_count]=eq;
for(i=0;i<big_count;i++)
a[start+i+small_count+1]=big_array[i];
my_quick(a,start,start+small_count-1);
my_quick(a,start+small_count+1,end);

}
void display(int a[],int n)
{
int i;
for(i=0;i<n;i++)
printf("%d\n",a[i]);
}
int main()
{
int array[N];
my_list(array,N);
my_quick(array,0,N-1);
display(array,N);
}

归并排序
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 100240
void inti_list(int array[N],int n)
{
int i;
srand(time(NULL));
for(i=0;i<n;i++){
array[i]=rand()%N;
}
}
void merge(int a[N],int l_start,int l_end,int r_end)
{
int i;
int n=l_start;
int temp[N];
int r_start=l_end+1;
int m=r_start;
for(i=n;i<=r_end;i++){
if(n<=l_end&&m<=r_end){
if(a[n]<a[m]){
temp[i]=a[n];
n++;
}
else{
temp[i]=a[m];
m++;
}
}
else{
if(n>l_end){
temp[i]=a[m];
m++;
}
else if(m>r_end){
temp[i]=a[n];
n++;
}
}

}
for(i=l_start;i<=r_end;i++){
a[i]=temp[i];
}
}
int msort(int a[N],int start,int end)
{
if(start==end) return 0;
msort(a,start,(start+end)/2);
msort(a,(start+end)/2+1,end);
merge(a,start,(start+end)/2,end);
}
void display(int a[N],int n)
{
int i;
for(i=0;i<n;i++){
printf("%d\n",a[i]);
}
}
int main()
{
int array[N];
inti_list(array,N);
msort(array,0,N-1);
display(array,N);
return 0;
}
选择排序

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10240
void inti_list(int array[],int n)
{
int i;
srand(time(0));
for(i=0;i<n;i++){
array[i]=rand()%100000;
}
}
void buuble(int array[],int n)
{
int i,j,k,t,min;
for(i=0;i<n;i++){
min=array[i];
for(j=i+1;j<n;j++){
if(array[j]<min){
min=array[j];
k=j;
}
}
t=array[k];
array[k]=array[i];
array[i]=t;

}
}
void display(int array[],int n)
{
int i;
for(i=0;i<n;i++){
printf("%d\n",array[i]);
}

}
int main()
{
int n=N;
int array[N];
inti_list(array,n);
buuble(array,n);
display(array,n);
return 0;
}

堆排序

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 10240
void heap_sort(int a[],int i)
{
int t;
if(i==1) return;
if(a[i]<a[i/2]){
t=a[i];
a[i]=a[i/2];
a[i/2]=t;
heap_sort(a,i/2);
}
else{
return;
}
}
void init_array(int a[],int n)
{
int i;
srand(time(NULL));
for(i=1;i<=n;i++){
a[i]=rand()%N;
}
}
void init_sort(int a[],int n)
{
int i;
for(i=1;i<=n;i++)
heap_sort(a,i);
}
void display(int a[],int n)
{
int i;
for(i=n;i>=1;i--)
printf("%d\n",a[i]);
}
void h_sort(int a[],int i,int j,int k,int n)
{
int t;
if(n<j) return;
if(n<k&&n==j){
if(a[j]>=a[i]) return;
if(a[j]<a[i]){
t=a[j];
a[j]=a[i];
a[i]=t;
return;
}
}
if(a[i]<=a[k]&&a[i]<=a[j]) return;
else{
if(a[j]<=a[k]){
t=a[j];
a[j]=a[i];
a[i]=t;
h_sort(a,j,2*j,2*j+1,n);
}
else if(a[j]>a[k]){
t=a[k];
a[k]=a[i];
a[i]=t;
h_sort(a,k,2*k,2*k+1,n);
}
}
}
void heapsort(int a[],int n)
{
int t;
t=a[n];
a[n]=a[1];
a[1]=t;
h_sort(a,1,2,3,n-1);
return;
}
int main()
{
int i;
int array[N+1];
init_array(array,N);
init_sort(array,N);
for(i=N;i>=1;i--){
heapsort(array,i);
}
display(array,N);
return 0;
}

够了吧 记得给我加分 还给你运行过了
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
手机用户21899
2011-06-25 · TA获得超过236个赞
知道答主
回答量:444
采纳率:0%
帮助的人:291万
展开全部
给你发了 不只3种 给你5种了 363173922的 记得给我加分 有问题加我再给你解决 没分就免谈 好了都给你搞定了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式