多关键字排序c语言
答:其实,最想说明的是那段交换的代码 R[j]^=R[i];R[i]^=R[j];R[j]^=R[i];一定要排除 i==j 的情况。即自己与自己交换的情况。如:a=9;a^=a;/*a=0*/ a^=a;/*a=0*/ a^=a;/*a=0*/ a就不再是10了。include<stdio.h> include<stdlib.h> void quicksort(int R[],int...
答:1、打开visual C++ 6.0,准备一个空白的c语言文件,引入头文件,在main函数中定义变量和数组:2、接下来用scanf函数输入的10个数,将输入的数存入到变量a中,接着进行比较排序,如果后一个数比前一个数大则利用中间变量t实现俩值互换,最后输出排序的结果:3、编译运行程序,输入任意的10个数,回车...
答:include<stdio.h> include<string.h> void sort(char *a[]);void print(char *a[]);int main(){ char *a[] ={"ceo","define","basic","abc","empty"};printf("原来的序列是:\n");print(a);sort(a);printf("\n排序后的序列是:\n");print(a);printf("\n");return 0;} ...
答:C语言冒泡排序法的排序规则:将被排序的记录数组R[1..n]垂直排列,每个记录R看作是重量为R.key的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R:凡扫描到违反本原则的轻气泡,就使其向上"飘浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。初始 R[1..n]为...
答:思路:在数值进行排序时,下标也同时移动。这就要求二者要联动。为此创建一个PAIR结构体,将此二者关联在一起。用库里的快排函数qsort可以省略排序的麻烦,并指定qsort按PAIR中数值大小为标准排序结构体数组,这样排序结果中的结构体数组下标和值还是保持开始时的对应关系。include<STDIO.H>#include<string.h...
答:InsertBST(bt,A[i]); //将关键字A[i]插入二叉排序树T中 i++;} return bt; //返回建立的二叉排序树的根指针 } void DispInDescrease(BSTNode *bt){ //按从小到大输出查找树中的内容,对该树中序遍历即可 if(bt){ DispInDescrease(bt->lchild);printf("%d\t",bt->key);Dis...
答:我写了一个完整的。程序试运行正常。运行效果如下图。希望对您有帮助!include"stdio.h"include "stdlib.h"int charu(int a[]){ int n,i=0;while(a[i]!=0)i++;printf("\n该数列长度为%d。\n",i);printf("请输入要插入元素的位置n(n<=%d)(在第%d位插入即在末尾增加一个元素):...
答:从程序运行需要的时间和储存空间来看,这两个吧,选择排序用的时间较少。我给你举个例子,这是一个比较直观的例子:有十个数:10,9,8,7,6,5,4,3,2,1 。将他们按从小到大的顺序排成一列,用这两种方法的区别在于如下过程中:1、 冒泡排序:外层循环一共进行9次,第一次将10排到最后,这一...
答:for(i=1;i<4;i++) //外层 { t=a[i];for( j=i-1 ; j>=0 && t>a[j] ; j-- ) //内层 a[j+1]=a[j];a[j+1]=t;} 你要理解插入排序的原理,外层for从第二个数开始遍历(i从1开始),用t(即对应的a[i])和其前面的所有值进行比较,如果t大,则该数后移一位...
答:f(T a[], int n){} 你要用哪种排序?include<stdlib.h> include<stdio.h> include void InsertSort(int L[]) { // 对顺序表L作直接插入排序 int i,j;for (i = 2; i <= 100; ++i)if (L[i] < L[i-1]) { L[0] = L[i];for (j = i-1; L[0] < L[j]; --j...
网友评论:
梁峰15191293651:
c语言多关键字排序 -
62288饶单
: #include using namespace std; struct s{ int x; int y; int z; }; void sort(s a[], int n){ for(int i=0; i for(int j=i+1; j if(a[i].x>a[j].x|| a[i].x==a[j].x&&a[i].y>a[j].y|| a[i].x==a[j].x&&a[i].y==a[j].y&&a[i].z>a[j].z) swap(a[i], a[j]); } } } int main(){ s a[100]; int n; cin>>n; for(int i=...
梁峰15191293651:
C语言排序的方法 -
62288饶单
: 现在流行的排序有:直接插入排序、冒泡排序、简单选择排序、希尔排序、快速排序、堆排序、归并排序、基数排序.对n个记录进行选择排序的方法是:通过n-i次关键字之间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)...
梁峰15191293651:
c语言双关键字排序
62288饶单
: 提供一个思路,当然这个思路可能不是最优的 首先按第一个关键字x,基于链表排序,排序完成之后这些双关键字在每一段当中是有序的.然后把整条链表按照第一个关键字断开,即关键字x为1的一条链表,为2的一条,依此类推.然后分别在每一段当中按照第二个关键字排序,最后输出的时候合并就可以了. 或者就按照一般的排序方法,如果x相同就比较y,采用快速排序或者冒泡排序都可以
梁峰15191293651:
C语言双关键字排序谁会~进来看下 -
62288饶单
: 我的想法是,用一种稳定的排序方法(我用的是改进后的冒泡法),先对次要关键字排序,然后对主要关键字排序,代码如下,其中Sort_1是将两次排序整合到了一起,Sort则是直接做两次排序...
梁峰15191293651:
C语言中的排序法 -
62288饶单
: c语言中排序法有选择法和冒泡法是最常见的. 1冒泡法对10个数排序 #include<stdio.h> void main () { int a[10]; int i,j,t; printf("please input 10 numbers:\n"); for(i=0;i<10;i++)scanf("%d",&a[i]); printf("\n"); for(j=0;j<9;j++) //进行9次循环,实...
梁峰15191293651:
C语言,如何对结构体的不同成员排序?一个结构体类型有5个成员,需要分别按这5个成员的关键字排序 -
62288饶单
: 还真是这样,当然,你可以做点手脚,牺牲下空间.比如在结构体里保存一个指向如何排序的引导,在比较函数里面再提取这个信息,判断是哪个字段,做什么比较.一般这种比较函数跟qsort一起用.typedef struct { int key; double value; } the_record; int compare_function(const void *a,const void *b) { the_record *x = (the_record *) a; the_record *y = (the_record *) b; return x->key - y->key; }
梁峰15191293651:
用C语言写一个快速排序法,不要用库函数 -
62288饶单
: include<stdio.h> void main() {int a[]={8,4,24,1,54,87,113,39};//这里的元素可以手动输入,用for循环输入,先给定数组长度N //再一次输入数组元素 /* int n; scanf("&%d",n); for(int =0;i<n;i++)scanf("&%d",&a[i]); */ for(int i=0;i<8;i++){for(int j...
梁峰15191293651:
C语言多组输入并排序 -
62288饶单
: while(~scanf("%d",&b)); 这一句,把句尾的 ; 删除
梁峰15191293651:
用C语言编一个归并排序的程序 -
62288饶单
: /**设个有序关键字表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<stdio.h> #define ...
梁峰15191293651:
c语言插入排序 -
62288饶单
: 已经测试过可行.#include"stdio.h" #define MAXSIZE 20//一个用作示例的小顺序表的最大长度 int Insertsort(int r[],int n) {//作直接插入排序 int i,j; for(i=2;i<=n;i++) { r[0]=r[i]; //r[0]用作哨兵单元 j=i-1; while(r[0]{ r[j+1]=r[j]; //记录后移 j--; }//while r[j+1]...