![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
wae_gossip
这个作者很懒,什么都没留下…
展开
-
C++实现快排算法
快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。写了个基于C++的快排的:#include int Solt原创 2012-04-16 22:36:17 · 2357 阅读 · 1 评论 -
C++实现冒泡排序
下面是C++实现的冒泡排序:#include int Solt(int *a,int c){ if(c<=0) return 1; int temp=0; int flag=0; for(int i=0;i<c;i++) { if (a[i]>a[i+1]) { temp=a[i]; a[i]=a[i+1]; a[i+1]=temp;原创 2012-04-17 09:53:21 · 429 阅读 · 0 评论 -
C++实现堆排序
C++实现堆排序的源代码:#include void zhenli(int *a,int i,int Num){ if (2*i+1<=Num) { if(a[2*i-1]>a[2*i]) { if (a[i-1]<a[2*i-1]) { int temp=a[i-1]; a[i-1]=a[2*i-1]; a[2*i-1]=temp;原创 2012-04-19 11:51:43 · 349 阅读 · 0 评论 -
C++实现插入排序
排序算法,其实在几个基本的算法里面效果是最差的,放在最后面。#include void Change(int *b,int a,int j,int Num){ for (int i=Num-1;i>j;i--) { b[i]=b[i-1]; } b[j]=a;}void Paixu(int *a,int *b,int Num){ int flag=0; b[原创 2012-04-19 20:49:35 · 263 阅读 · 0 评论 -
C++实现堆排序(更新版)
#includevoid Exchange(int *a,int i,int largest) {int temp=a[i];a[i]=a[largest];a[largest]=temp; } Keep(int *a,int i,int n) { int largest; int l=2*i+1;int r=2*i+2; if(la[i]) {原创 2012-06-11 20:29:59 · 297 阅读 · 0 评论 -
C++实现最优二叉树(修改版)
#includestruct Node{int num;Node *next;Node *LChild;Node *RChild;};void Print(Node *a) { Node *p=a->next; while(p!=NULL) { coutnum<<endl; p=p->next;原创 2012-06-19 23:31:12 · 1325 阅读 · 0 评论 -
N个数中前K个小的树(快排的改进)
在没有改进快排实现得到K个数时,时间复杂度达到了O(NlogN),而改进之后时间复杂度降到了O(NlogK).#includeint Solt(int *a,int start,int end,int k){ if(start==end) { return 0; } int Post=start; int Temp=a[start]; int Change;原创 2012-06-28 20:36:53 · 813 阅读 · 0 评论 -
求一个无符号整形变量1的个数
第一种方法:位操作,这种操作的复杂度是二进制的位数:#includemain(){ unsigned int a; cin>>a; int count=0; int num=0; while(count<8) { if(a&1==1) { num++; } a>>=1; count++; } cout<<num<<endl;原创 2012-07-13 09:52:23 · 537 阅读 · 0 评论 -
一道面试题“传入一个12345,返回结果54321”的实现
#includeint check(int a,int &b){ if(a==0) { return 0; } int k=a; int i=1; int gewei; gewei=a%10; while(k!=0) { k=k/10; i=i*10; } b=b+gewei*i/10; check(a/10,b);}main(){原创 2012-08-20 17:26:46 · 959 阅读 · 0 评论