排序题
王佳Gre
hi
展开
-
交换排序——冒泡排序
冒泡排序是最简单的交换排序,对元素个数为N的待排序序列进行排序时,共进行N-1次循环,在第k次循环时,对从第1到第N-k个元素进行从前往后比较,每次比较相邻的两个元素,若前一个元素大于后一个元素,则互换位置,这样一次循环下来,就把第k大的元素移动到N-k位置上,成为第k趟冒泡,整个过程一共进行N-1趟冒泡,直到第一和第二个元素比较完成,最终剩余最小的元素,留在第一个位置上,排序结束。 void bubble(int a[],int n) { int i,j,t; for(i=1;i<n;i+.原创 2020-06-11 17:38:54 · 297 阅读 · 0 评论 -
插入排序——简单插入排序
核心思想:将待排序的一组序列分为已排好的和未排好的两个部分,初始状态时,已排好的序列只包含一个元素,未排序的序列中的元素除去第一个以外N-1个元素;此后将未排序序列中的元素逐一插入到已排序的序列中。如此往复,经过N-1次插入后,未排序序列中元素的个数为0,排序完成。 具体到第k-1次插入,对应待插入元素应为第k个元素(未排序的第一个元素),插入过程:将它和第k-1个元素(已排序的最后一个元素)比较,若大于第k-1个记录,则该次循环结束,否则,将两个元素交换,在比较该数和k-2元素大小,如此往复,直到该数比.原创 2020-06-11 16:07:39 · 160 阅读 · 0 评论 -
选择排序——简单选择排序
简单选择排序是最简单的排序思想,其思想是在未排序的序列中选出最小的元素和序列首位交换,接来下在未排序序列中再选出最小元素与序列的第二个元素交换,依次类推直至排好。 void selectSort() { for(int i=1;i<=n;i++)//进行n趟操作 { int k=i; for(int j=i;j<=n;j++)//选出[i,n]最小的元素 { if(A[j]<A[k]) { k=j; } } int tem.原创 2020-06-11 15:29:44 · 252 阅读 · 0 评论 -
P1059 明明的随机数
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了NNN个111到100010001000之间的随机整数(N≤100)(N≤100)(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。 输入 输入有两行,第111行为111...原创 2020-05-08 14:58:17 · 76 阅读 · 0 评论