20、快速排序(東軟喜歡考類似的演算法填空題,又如堆排序的演算法等)
#include
"stdafx.h"
#define
n 10
intpart(int list, int low, int high) //
一趟排序,返回分割點位置
list[low] = tmp;
return low; }
void
qsort(int list, int low, int high) //
應用遞迴進行快速排序
} void
show(int list, int n) //
輸出列表中元素
intmain(int argc, char* argv) ;
show(list, n); //
輸出排序前序列
qsort(list, 0, n-1); //
快速排序
show(list, n); //
輸出排序後序列
return getchar(); }
21、2023年11月23日慧通筆試題:寫一函式判斷某個整數是否為回文數,如12321為回文數。可以用判斷入棧和出棧是否相同來實現(略微複雜些),這裡是將整數逆序後形成另一整數,判斷兩個整數是否相等來實現的。
#include
"stdafx.h"
intisechonum(int num)
intmain(int argc, char* argv)
22、刪除字串中的數字並壓縮字串(神州數碼以前筆試題),如字串」abc123de4fg56」處理後變為」abcdefg」。注意空間和效率。(下面的演算法只需要一次遍歷,不需要開闢新空間,時間複雜度為o(n))
#include
"stdafx.h"
void
delnum(char *str)
intmain(int argc, char* argv)
23、求兩個串中的第乙個最長子串(神州數碼以前試題)。如"abractyeyt","dgdsaeactyey"的最大子串為"actyet"。
#include
"stdafx.h"
char
*maxsubstring(char *str1, char *str2)
}char *strresult = (char *)calloc(sizeof(char), max+1);
for(i=0; i
strresult[i] = str2[index++];
return strresult; }
intmain(int argc, char* argv)
24、不開闢新空間完成字串的逆序
#include
"stdafx.h"
void
change(char *str)
}int
main(int argc, char* argv)
25、刪除串中指定的字元
#include
"stdafx.h"
void
delchar(char *str, char c)
intmain(int argc, char* argv)
26、判斷單鏈表中是否存在環(網上說的筆試題)
#include
"stdafx.h"
typedef
char eletype; //
定義鍊錶中的資料型別
typedef
struct listnode //
定義單鏈表結構
node;
node *create(int n) //
建立單鏈表,n為節點個數
return head; }
void
addcircle(node *head, int n) //
增加環,將鏈尾指向鏈中第n個節點
p->next = q; }
intiscircle(node *head)//這是筆試時需要寫的最主要函式,其他函式可以不寫
return 0; }
intmain(int argc, char* argv)
演算法部分整理
1.pca主成分分析 主成分分析 principal component analysis,pca 是一種統計方法。通過正交變換將一組可能存在相關性的變數轉換為一組線性不相關的變數,轉換後的這組變數叫主成分。無監督的學習,往特徵量最大的特徵向量的分銷商投影 pca的主要問題 沒有考慮類別號 進行主成...
排序演算法(部分)
快速排序會犧牲陣列中的乙個資料,所以實際的陣列長度,會比真實的資料多一,其中會將下面所說的標誌位賦值給arr 0 以犧牲陣列中arr 0 為例 快速排序主要思想 在陣列角標從left到right之間,取左邊第乙個數作為標誌位,將標誌位賦值給arr 0 然後分兩步迴圈判斷 這兩步順序不能混亂 1.從右...
面試題之演算法部分 深入快速排序
本篇文章我將講述快速排序的基本思想,實現,和時間複雜度的深入分析。基本思想 選取待排序列中的某個元素t,然後按照與該元素的大小關係重新整理序列中的元素,使得整理後的序列中排在t以前的元素均小於t,排在t以後的元素均大於等於t,我們將t稱為劃分元素。此時可以保證此時t的位置一定和最終有序序列t的位置相...