数据结构名次计算和排序算法 您所在的位置:网站首页 排序怎么操作excel名次 数据结构名次计算和排序算法

数据结构名次计算和排序算法

2024-01-13 11:08| 来源: 网络整理| 查看: 265

数据结构名次计算和排序算法 1.名次计算以及排序

1.名次计算以及排序

给数组a[n]中的元素进行名次的计算。就比如a[]={2,1,4,7,5},计算完名次之后会出现r[]={2,1,3,5,4},每一个r中元素代表的是其在a数组中对应元素所排的名次。 下面给出代码:

#include using namespace std; template void rank(T a[],int n,int r[]) { for(int i=0;i for(int j=0;j r[i]++; } else { r[j]++; } } } }

读者要是觉得这段代码理解困难的话可以举例进行测试。 在刚才代码的基础上,我们如何利用每一个元素的名次从而将原数组的数进行排序? 这个问题我们利用一个附加数组进行辅助排序: 下面展示代码:

#include using namespace std; template void rearrange(T a[],int n,int r[]) { T* u = new T [n]; for(int i=0;i a[i]=u[i];//将数组a重新进行赋值操作 } }

上面两段代码连起来就可以完成对数组的一个排序。其实我们直接对原数组进行操作就可以完成数组排序,并不是非要用到辅助数组

下面展示一种排序算法叫做选择排序: 选择排序就是首先找出最大的元素,把它移到a[n-1]。然后再余下的n-1个元素中找出最大的元素放在a[n-2]。如此进行下去知道只剩下一个元素。这种排序就叫做选择排序。 下面展示选择排序的具体代码:

#include using namespace std; template //这个函数是为了找出数组中的最大元素所在的位置 int indexOfMax(T a[],int n) { if(n if(a[indexOfMax] for(int size = n; size >1 ;size--) { int j=indexOfMax(a ,size) swap(a[j],a[size - 1]); } }

除了选择排序之外还有一种常用的排序方法叫冒泡排序,冒泡排序就是逐渐把最大的元素移到序列右侧。在一次的冒泡过程中,相邻的元素比较。如果左边的元素大于右边的元素,则交换。 下面展示冒泡排序的排序代码: 下面展示一些 内联代码片。

#include using namespace std; template void bubble(T a[],int n) { for(int i=0;i for(int j=n;j>1;j--){ bubble(a, j); } } int main() { int a[]={5,7,2,1,3}; bubbleSort(a,5); for(int i=0;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有