笔记1--逆序对(归并排序)
来源:互联网 发布:俞永福 知乎 编辑:程序博客网 时间:2024/05/21 16:54
逆序对:
设A[1...n]是一个包含n个不同数的数组。如果在i〈j的情况下,有A[i]〉A[j],则(i,j)就称为A中的一个逆序对(inversion)。
#include <stdio.h>int sum = 0;void merge(int *arr, int left, int middle, int right){int i,j,k;int m=middle-left+1;int n=right-middle;int a[100],b[100];for(i=0;i<m;i++)a[i]=arr[left+i];for(j=0;j<n;j++)b[j]=arr[middle+j+1];a[m]=100;b[n]=100;i=0;j=0;for(k=left;k<=right;k++)if(a[i]<b[j])arr[k]=a[i++];else{arr[k]=b[j++];sum+=middle-(left+i)+1;}}void mergesort(int *arr,int left,int right){int middle=(left+right)/2;if(left<right){mergesort(arr,left,middle);mergesort(arr,middle+1,right);merge(arr,left,middle,right);}}//测试:int main(){int i;int arr[] = {9,8,7,6,5,4,3,2,1,0};int len=sizeof(arr)/sizeof(int);mergesort(arr, 0, len-1);printf("%d\n", sum);for (i = 0; i<len; i++)printf("%d ", arr[i]);return 0;}
- 笔记1--逆序对(归并排序)
- 逆序对 (归并排序)
- 逆序对 归并排序
- 归并排序 & 逆序对
- 归并排序--逆序对
- POJ 2299 逆序对(归并排序)
- 数组中的逆序对(归并排序)
- 求逆序数对(归并排序)
- 求逆序对(归并排序)
- 归并排序(逆序对的解决)
- 归并排序&归并排序求逆序对
- 【算法】归并排序(可求逆序数或逆序对)
- 归并排序求逆序对
- 【归并排序】【逆序对】序列
- 归并排序与逆序对
- 归并排序求逆序对
- 归并排序求逆序对~~~
- 归并排序求逆序对
- 最少拦截系统
- 备注几个常用的OJ练习平台
- 中序遍历和先序遍历/后序遍历构建二叉树
- 产品设计理应遵循哪些原则?
- 迭代器(Iterator)模式
- 笔记1--逆序对(归并排序)
- 解决vs2008安装问题 Office 2007 Microsoft Visual Studio Web 创作组件 安装失败
- Leetcode 36: Combinations
- dm365 color space
- Matlab下DICOM文件根据窗位、窗宽的显示和BMP格式的保存
- ios SDK开发之键盘通知
- 移动Web开发的10个重要准则
- 静态和动态链接
- 组合(composite)模式