当前位置:三九宝宝网 → 宝宝教育 → 教学论文 → 正文

随机生成10个待排序数据用C语言写出二路归并排序算法

更新:02-12 整理:39baobao.com
字体:

[链式基数排序的算法思想C语言越多越仔细越好]参考 /* 基数排序的算法源程序*/ #include#define D 3 /* D为排序码的最大位数 */ #define R 10 /* R为基数 */ typedef int KeyType; typedef int DataType; struct Node; /...+阅读

#include #include #include int b[ 10 ];

void Merge( int c[], int d[], int l, int m, int r ) { int i = l, j = m + 1, k = l; while( ( i <= m ) && ( j <= r ) ) if( c[ i ] <= c[ j ] ) d[ k++ ] = c[ i++ ]; else d[ k++ ] = c[ j++ ]; if( i > m ) for( int q = j; q <= r; q++ ) d[ k++ ] = c[ q ]; else for( int q = i; q <= m; q++ ) d[ k++ ] = c[ q ]; }

void Copy( int c[], int d[], int n1, int n2 ) { for( int i = n1; i <= n2; i++ ) c[ i ] = d[ i ]; }

void MergeSort( int a[], int left, int right ) { if( left < right ) { int i = ( left + right ) / 2; //取中点,分成两路 MergeSort( a, left, i ); MergeSort( a, i + 1, right ); Merge( a, b, left, i, right ); //合并到数组b Copy( a, b, left, right ); //复制到数组a } }

int main() { int a[ 10 ], i; srand( time( 0 ) ); for( i = 0; i < 10; i++ ) a[ i ] = rand() % 100; //随机生成 for( i = 0; i < 10; i++ ) //输出随机生成的数据 printf( "%d\t", a[ i ] ); printf( "\n" ); MergeSort( a, 0, 9 ); for( i = 0; i < 10; i++ ) //输出排序后的结果 printf( "%d\t", a[ i ] ); printf( "\n" ); return 0; }

//在vc++6.0上调试运行成功。若有不明白的地方,call me!!!

""

随机生成数据,每次测试数据会有所不同,但都是按小到大排列!!

本文地址:https://www.39baobao.com/show/29_40132.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

用C语言如何将一个一维数组中的元素随机排序#include <stdio.h> #include <stdlib.h> #include <time.h> int main() { int i,j,n,k,t,a[100]; srand((unsigned) time(NULL)); scanf("%d",&n); k=n; //k:未定顺序的元素个...

C语言二路归并排序求详解啊!看不懂递归啊!到底是怎么个过程mid的初始值为0,进入if循环之后,会首先判断大小,加入满足条件first<last时,mid的值就变成了 mid = (first+last)/2;然后会进入函数的调用,调用 merge_sort(arr, first, mid);函数,递...

C语言中有多少种常用的排序; using namespace std; int main() { int a[10]; cout<&lt;"输入10个数字:"<<endl; for (int i=0;i<10;i++) { cin>>a[i]; } for(int m=0;m<10;m++) for(int n=0;n<10;n++) { i...

使用C语言编程实现排序算法#include<stdio.h> main() { struct { char mz[5]; int sd; char sbing[5]; int xs; }a[100],k; int i,b,j; printf("请输入球员数量\n"); scanf("%d",&b); for(i=0;i<b;i++) {pri...

帮我随便写下用C语言实现并归排序的代码int a[100]; void Merge(int head,int mid,int tail) { int temp[tail-head+1]; int top=-1; int i=head,j=mid+1; while (i<=mid &amp;&amp; j<=tail) { if (a[i]>a[j]) te...

急!C语言程序数据结构排序算法的问题#include"stdio.h" #include"stdlib.h" #include "string.h" #define Max 100 //假设文件长度 typedef struct{ //定义记录类型 int key; //关键字项 }RecType; typedef RecType Se...

用c语言两个排序算法随便来俩就行 3Q冒泡排序 #include<stdio.h&gt; //链接标准头文件 #define N 5 //定义常量N并赋值为5 void main() //主函数入口 { //表示主函数开始 int i,j; //定义整形变量i和j int grade[N...

C语言插入排序算法int main () { int i; DataType a[MaxSize]; SqList L; srand((unsigned)time(NULL)); for (i=0;i{ int number = rand()%MaxSize + 1; //printf ("%d ",number); a[i].key =...

高分送!如何用C语言实现归并排序算法!#include <iostream> using namespace std; void merge(int array[],int left,int right) { int temparray[right]; for(int j=left;j<=right;j++) { temparray[j]=array[j]...