最近一直在複習演算法,在經歷了四次面試之後,還沒有找到適合自己的工作;
暫時歇一歇,準備冬天去北京創業一條街吹泡泡去。
在面試過程中主要提及的就是對於排序演算法的疑問;
主要針對以下幾種排序演算法:
1,氣泡排序;
2,插入排序;
3,選擇排序;
4,希爾排序;
5,歸併排序;
6,快速排序;
7,堆排序
對於基數排序或者計數排序,基本上沒有什麼討論,基本上講述一下概念就可以了。
針對我經歷的面試而言,大概有幾種提問的方法:
1,比較一下或講述一下幾種排序的概念,比較一下時間複雜度和空間複雜度;
2,就是比較難一點的面試,就是讓你講述一下堆排序,或把堆的建立過程和堆排序的執行過程詳細描述出來,或者直接手寫一下堆排序;一位面試官和我討論過,對於排序這方面,比較看重的就是堆排序,畢竟別的排序方法並沒有太多太難可以體現出差距的東西。
堆排序是空間複雜度o(1)時間複雜度為o(nlogn)的一種排序演算法,之所以空間複雜度可以為o(1),是因為在用陣列實現的時候可以通過根節點和左右子節點的標號之間的數學關係進行直接的訪問操作。避免了節省了儲存。而快速排序需要記錄分割點的位置座標,空間複雜度為o(nlogn);
我手寫的堆排序程式分為三個部分:
1,驅動程式;
2,構造最大堆;
3,調整完全二叉樹的上浮程式;
在我的堆排序演算法中,直接將堆頂元素與堆尾元素互換,在乙個陣列中完成堆排序;
**稍後貼。
幾種排序演算法
幾種比較常見的排序演算法 第一種 函式功能 雙向氣泡排序 2013.7.8 時間複雜度o n 2 include void mp int array,int n if mmax 0 沒有記錄交換,掃瞄結束 break bmax mmax for i bmax 1 i bmin i 此次掃瞄使輕氣泡上...
幾種排序演算法
本帖依據學習進度持續更新 資料結構與演算法分析 c語言描述 學到第七章,是時候該系統的學習一下排序演算法了。首先學到的是插入排序,演算法就不贅述了,書上部落格上到處都有。書上的兩個定理還不太明白 插入排序 定理7.1 n個互異數的陣列的平均逆序數是n n 1 4。定理7.2 通過交換相鄰元素進行排序...
幾種排序演算法
插入排序 void sort int a,inta size a j key printf n print a,a size 插入排序的設計思想就是按照從陣列a 1 開始 當然也可以從0開始只不過從0開始會多加乙個判斷得不償失 每次迴圈所要加入的元素,如果大於前乙個元素,就直接加入,否則就將將前面已...