快速排序:
#include#include #define n 100
using namespace std;
int a[n];
void quicksort(int l,int r)
a[x] = num;
if(l < x) quicksort(l,x);
if(x < r) quicksort(x+1,r);
}int main()
return 0;
}
希爾排序:
對於每一趟排序,選取乙個增量,將原陣列分成若干組,對每一組進行插入排序,重複上述步驟,最後一次增量為1。
shell排序方法實質上是一種分組插入方法 ,它的時間複雜度的下界是n*logn。
堆排序:
堆分為大根堆和小根堆,是完全二叉樹。
下面以大根堆為例解釋演算法,大根堆的每個節點的左右兒子節點都不大於它。假設有n個元素,存在a[1-n]。
1、建堆,從最後乙個非葉子節點開始調整堆,直到調整到根節點,建堆完成之後a[1]最大,a[i]>=a[2*i]&&a[i]>=a[2*i+1]。
2、把a[1]和a[n]交換,a[1- (n-1)]是亂序的,之後是有序的
3、調整堆,使其滿足堆的性質(即1)
4、重複上述操作
時間複雜度分析:建堆時間複雜度是o(n),從根節點開始的對調整時間複雜度是logn,一共調整n次,故時間複雜度為nlogn。
#include#define n 100
int a[n];
void swap(int &a,int &b)
void adjustheap(int i,int size)
}void buildheap(int size)//從小到大排序,所以要建最大堆
void heapsort(int size)
}int main()
return 0;}/*
510 2 3 4 1
*/
歸併排序:
二分的思想,遞迴到底層,排序,在合併
#include#include#define n 100
using namespace std;
int a[n],b[n];
void merge_sort(int l,int r)//從小到大排序
if(y > r)
if(a[x] < a[y]) b[j++] = a[x++];
else b[j++] = a[y++];
}for(int i = l; i <= r; i++)
a[i] = b[i];
}int main()
return 0;
}
mysql面試筆試 MySQL面試筆試題集 BAT
01 mysql技術特點?02 mysql預設埠號?03 mysql優勢?04 mysql支援的儲存引擎以及特點?mysql5.7支援 innodb myisam merge memory archive csv performance schema blackhole innodb是目前mysql...
面試筆試題
1 昨天參加一公司筆試,給幾道演算法題整懵了,其實也不難,但好久沒有碰演算法,只是有思路,要讓我在這麼短的時間內寫出程式來還是不行。2 這裡將其中一道稍微複雜一點的演算法題寫下來,以此小結。3 4 題目描述 5 將n個雞蛋放入到m個籃子中去 n m 保證每個籃子中至少乙個雞蛋,然後指定乙個數x,要求...
面試 筆試 解答
sql程式設計 題目 求每一位員工工作時長 公司每位員工打卡時間表a 員工工作時長表b 得到分組時間的最大值 下班時間 select a.id,a.name a.time from select id,name,time from punch group by id desc a group by ...