数据结构名次计算和排序算法 | 您所在的位置:网站首页 › 排序怎么操作excel名次 › 数据结构名次计算和排序算法 |
数据结构名次计算和排序算法
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 实验室设备网 版权所有 |