三九宝宝网宝宝教育教学论文

用c语言编写归并排序代码要求易懂本人只是c语言的初学者越简

02月28日 编辑 39baobao.com

[用c语言编写一个排序程序要求使用基数排序算法最好能详细解释]#include#define MAX_NUM_OF_KEY 8 //关键字项数的最大值#define RADIX 10 //关键字基数,此时是十进制整数的基数#define MAX_SPACE 10000 typedef int KeysType; typedef in...+阅读

//#include

//

//using namespace std;

//

//void Guibing(int*arr,int low,int high)

//{

// int m_Begin1 = low;

// int m_End1 = (low+high)/2;

// int m_Begin2 = m_End1+1;

// int m_End2 = high;

//

// int* temp = new int[high-low+1];

// //申请一个这两组的空间

// //要看 只要有一组到结尾就要结束

// int k=0;

// for (;m_Begin1 <= m_End1 & m_Begin2 <= m_End2;k++)

// {

// // 然后找小的往里存

// if (arr[m_Begin1] < arr[m_Begin2])

// {

// temp[k] = arr[m_Begin1];

// m_Begin1++;

// }

// else

// {

// temp[k] = arr[m_Begin2];

// m_Begin2++;

// }

// }

//

// //如果第一组没到结尾 顺序存

// while(m_Begin1 <= m_End1)

// {

// temp[k] = arr[m_Begin1];

// k++;

// m_Begin1++;

// }

// //如果第二组没到结尾 顺序存

// while(m_Begin2 <= m_End2)

// {

// temp[k] = arr[m_Begin2];

// k++;

// m_Begin2++;

// }

// //把已经排好序的 temp 放回到原来对应的位置

// for (k = 0;k

// {

// arr[low+k] = temp[k];

// }

// delete[] temp;

//}

//

//void Digui(int*arr,int low,int high)

//{

// if (low < high)

// {

// int mid = (low+high)/2;

// Digui(arr,low,mid);

// Digui(arr,mid+1,high);

// Guibing(arr,low,high);

// }

//}

//

//int main()

//{

// int arr[10] = {9,11,5,3,17,13,1,17,25,8};

//

// Digui(arr,0,9);

//

// for (int i =0 ;i<10;i++)

// {

// cout << arr[i] << " ";

// }

//

// system("pause");

// return 0;

//}

c语言归并排序

直接上源码,仅供参考:

#include

// 一个递归函数

void mergesort(int *num,int start,int end);

// 这个函数用来将两个排好序的数组进行合并

void merge(int *num,int start,int middle,int end);

int main()

{

// 测试数组

int num[10]= {12,54,23,67,86,45,97,32,14,65};

int i;

// 排序之前

printf("Before sorting:\n");

for (i=0; i<10; i++)

{

printf("%3d",num[i]);

}

printf("\n");

// 进行合并排序

mergesort(num,0,9);

printf("After sorting:\n");

// 排序之后

for (i=0; i<10; i++)

{

printf("%3d",num[i]);

}

printf("\n");

return 0;

}

//这个函数用来将问题细分

void mergesort(int *num,int start,int end)

{

int middle;

if(start

{

middle=(start+end)/2;

// 归并的基本思想

// 排左边

mergesort(num,start,middle);

// 排右边

mergesort(num,middle+1,end);

// 合并

merge(num,start,middle,end);

}

}

//这个函数用于将两个已排好序的子序列合并

void merge(int *num,int start,int middle,int end)

{

int n1=middle-start+1;

int n2=end-middle;

// 动态分配内存,声明两个数组容纳左右两边的数组

int *L=new int[n1+1];

int *R=new int[n2+1];

int i,j=0,k;

//将新建的两个数组赋值

for (i=0; i

{

*(L+i)=*(num+start+i);

}

// 哨兵元素

*(L+n1)=1000000;

for (i=0; i

{

*(R+i)=*(num+middle+i+1);

}

*(R+n2)=1000000;

i=0;

// 进行合并

for (k=start; k<=end; k++)

{

if(L[i]<=R[j])

{

num[k]=L[i];

i++;

}

else

{

num[k]=R[j];

j++;

}

}

delete [] L;

delete [] R;

}

用C语言编一个归并排序的程序

/**设个有序关键字表s1=(18,25,37,42),s2=(20,33,40).同时将s1,s2存储在数组r[1...7]中 **s1放r[1..4],s2放[5..7],现要归并到一维数组r2[1..7]中,只要依次比较这两个有序 **表中相应记录关键字,按取小原则复制到r2中 **/ #include#define MAXITEM 100 typedef struct rec { int key; char data[20]; }elemnode[MAXITEM]; void merge(elemnode r,elemnode r1,int l,int m,int h) { // i,j是r的指示器,i的取值从l到m, j的取值从m+1到h,k是r1的指示器 int i = l,j = m+1,k = l; while(i

以下为关联文档:

c语言初学者求下面输出杨辉三角的c语言代码的详细说明我和你写的不一样啊 #include int main() { int i,j; int a[10][10]; for(i=0;i<10;i++) //初始化第0行和对角线元素 { a[i][10]=1; a[i][i]=1;} for(i=2;i<10;j++) //公式...

C语言课程设计 shell排序堆排序快速排序归并递归和非递归#include#include#include#includevoid shellSort(int *a,int len) { int step; int i,j; int temp; for(step=len/2; step>0;step/=2) { for(i=step;i=0 & temp0; i--) { h...

如何用C语言编一个归并排序的程序#include "MergeSort.h"#includeusing namespace std;MergeSort::MergeSort(vector_list, int _len){ list.push_back(0); link.push_back(0); for (int i=0; ilen = _len;}//...

c语言归并排序之前写过一个模版类,这里是部分代码: void Merger<T>::sub_Merger(T * array, size_t n) { if(n == 1) //~ 递归终止 return ; else if(n == 2) //~ 递归终止 { if( array[0]...

c语言编写快速排序int partition(int n[],int left,int right) //int类型的方法,传入参数(int类型的 数组n,int类型的参数left和right) { int lo,hi,pivot,t;//定义int类型的变量 pivot=n[left];//...

随机生成10个待排序数据用C语言写出二路归并排序算法#include<stdio.h> #include<stdlib.h> #include<time.h> 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...

帮我随便写下用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 <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]...

C语言初学者 qsort排序//给你个归并 #include <stdio.h> void m_sort(int a[] ,int p ,int r); void m_sort_sort( int a[],int p,int q,int r ); void main() { int i; int a[8]={3,5,2,6,1,7,4,...

推荐阅读
图文推荐