网站名称和备案,东莞网站建设美丽,网站和app开发,中小企业网络营销的发展现状题目描述 冒泡排序和快速排序都是基于交换进行的排序方法#xff0c;你的任务是对题目给定的N个#xff08;长整型范围内的#xff09;整数从小到大排序#xff0c;输出用冒泡和快排对这N个数排序分别需要进行的数据交换次数。 输入 连续多组输入数据#xff… 题目描述 冒泡排序和快速排序都是基于交换进行的排序方法你的任务是对题目给定的N个长整型范围内的整数从小到大排序输出用冒泡和快排对这N个数排序分别需要进行的数据交换次数。 输入 连续多组输入数据每组数据第一行给出正整数N(N ≤ 10^5)随后给出N个整数数字间以空格分隔。 输出 输出数据占一行代表冒泡排序和快速排序进行排序分别需要的交换次数数字间以1个空格分隔行末不得有多余空格。 示例输入 8
49 38 65 97 76 13 27 49 示例输出 15 9 提示 注意数据相等时不做交换 #include stdio.h #include string.h int a[100010]; int b[100010]; int num2;//快速排序所要交换的次数 void qsort(int a[],int l, int r)//快速排序 { int i,j,k; ka[l]; il;jr; if(lr) return; while(ij) { while(ija[j]k) j--; if(i!j) { a[i]a[j]; num2; } while(ija[i]k) i; if(i!j) { a[j]a[i]; num2; } } a[i]k; qsort(a,l,i-1); qsort(a,i1,r); } int main() { int n, i, j, num1, t; while(~scanf(%d, n)) { num1 0;//冒泡排序所要交换元素的次数 num2 0; for(i0; in; i) scanf(%d, a[i]); for(i0; in; i) b[i]a[i]; for(i0;in-1;i) for(j0;jn-i-1;j)//冒泡排序 { if(b[j]b[j1]) { t b[j]; b[j] b[j1]; b[j1] t; num1;//元素交换的次数 } } qsort(a,0,n-1); printf(%d %d\n,num1,num2); } return 0; }