
排序算法
排序算法
成长的小牛233
不辜负每一份热爱
展开
-
qsort函数用法
qsort 功 能: 使用快速排序例程进行排序 用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *)); 各参数:1 待排序数组首地址 2 数组中待排序元素数量 3 各元素的占用空间大小 4 指向函数的指针用于确定排序的顺序 排序方法有很多种, 选转载 2016-04-14 19:55:14 · 398 阅读 · 0 评论 -
分巧克力(蓝桥杯)
标题: 分巧克力儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足:1. 形状是正方形,边长是整数 2. 大小相同 例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力。当...原创 2018-03-31 09:33:33 · 300 阅读 · 0 评论 -
堆排序原理及算法实现(最大堆)
堆排序 堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。1.堆 堆实际上是一棵完全二叉树,其任何一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即任何一非叶节点的关键字不大于或者不小于其左右孩子节点的关键字。 堆分为大顶堆和小顶堆,满足Key[i]>=Key[2i+1]&&key>转载 2016-12-28 09:35:02 · 623 阅读 · 0 评论 -
数据结构实验之排序二:交换排序
手懒不想写。。。转自http://blog.youkuaiyun.com/godsight/article/details/52150172#includeusing namespace std;int a[100100];int b[100100];int cnta,cntb;void qsort(int *p,int n){ if(n<=1)return; int i=转载 2016-11-21 14:07:21 · 873 阅读 · 0 评论 -
交叉排序
#include#includeint n;int b[50000],a[50000],c[50000];int main(){ while(~scanf("%d",&n)) { int l=0,p=0; for(int i=1; i<=n; i++) { scanf("%d",&a[i]);原创 2016-11-21 13:19:14 · 437 阅读 · 0 评论 -
数据结构实验之排序六:希尔排序
#include#includeint n;int b[50000],a[50000];void shell(int a[],int dk){ for(int i=dk; i<n; i++) { for(int j=i-dk; j>=0; j-=dk) { if(a[j]>a[j+dk])原创 2016-11-21 13:03:00 · 656 阅读 · 2 评论 -
sdut 数据结构实验之排序三:bucket sort
一开始这种做法超时:#include int b[5000000],a[5000000],n,ans;void merge_sort(int *a,int *b,int x,int y){ if(y-x>1) { int m=x+(y-x)/2;//中间点的坐标 int p=x,q=m,i=x; merge_sort(a,原创 2016-11-21 12:39:28 · 1202 阅读 · 0 评论 -
sdut 数据结构实验之排序五:归并求逆序数
#include#includelong long ans;int a[100010],temp[100010];void merge(int s1,int e1,int s2,int e2){ int p1,p2,p; p=0;p1=s1;p2=s2; while(p1<=e1&&p2<=e2) { if(a[p1]<=a[p2]原创 2016-11-21 12:06:00 · 487 阅读 · 0 评论 -
归并排序的实现-代码
#include<stdio.h> void merge_sort(int *a,int *b,int x,int y) { if(y-x>1) { int m=x+(y-x)/2;//中间点的坐标 int p=x,q=m,i=x; merge_sort(a,b,x,m); ...原创 2016-11-19 19:47:09 · 392 阅读 · 0 评论 -
快速排序的实现--代码
#include int a[10000];void QickSort(int a[],int l,int r){ int temp; int i=l,j=r; if(l<r) { temp=a[l];//存val的值 while(i!=j) { while(j>i&&a[j]>temp)原创 2016-11-19 19:46:33 · 395 阅读 · 0 评论 -
归并排序(视频+详解+代码)
归并排序概述:归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并过程为:比较a[i]和a[j]的大小,若a[i]≤a[j],则将第一个有序表中的元素a[原创 2016-10-16 15:38:27 · 2789 阅读 · 1 评论 -
选择排序、插入排序、冒泡排序、快速排序、归并排序和希尔排序代码
#include<iostream>#include<algorithm>#include<ctime>using namespace std;#define random(a,b) (rand()%(b-a+1)+a)void print_array(int *a);void quick_sort(int *a, int l, int r){ ...原创 2018-07-05 13:29:47 · 270 阅读 · 0 评论