素數打表,快速冪,快乘,快排模板以及各種注意事項

2021-08-18 14:25:46 字數 2168 閱讀 9751

一:

素數打表:

對10000以內素數打表:

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

int main()

;for(i=2;i<11000;i++)

}(可以根據需求自行擴大縮小陣列),時間複雜度大約為 n+ln(n)(記不太清了);

二:快速冪:

求  a的b次方:

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

int main()

printf("%d\n",n);

}原理可以把b轉換成二進位制研究一下,這裡只是為了整理模板,原理不細說。

假如結果要求對某個數求餘一定要對每一步每個數都求餘,千萬不要偷懶,不然萬一某一布值超出long long int 的儲存範圍導致結果不對都很難找錯誤。

三:快乘:

要求求 a×b。

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

int main()

printf("%d\n",n);

} 原理與**都與快速冪相差不大,可以關聯記憶,但是一定要區分幾個小細節

n的初值以及每一步a,n的運算。

同樣,假如結果要求對某個數求餘一定要對每一步每個數都求餘,千萬不要偷懶,不然萬一某一布值超出long long int 的儲存範圍導致結果不對都很難找錯誤。   千萬要注意!!!!!

快排:1    :

對n個整數排序:

#include

#include

#include

#include

#include

#include

#include

using namespace std;

bool cmp(int a,int b)

int main()

a[11000];

bool cmp(struct a a,struct a b)

int main()

對結構體排序必須寫全被調函式,被調函式中的if,else,是對結構體進行了二級排序,可根據題目需要更改,捨棄。

3  : 對字串排序(字典序)

#include

#include

#include

#include

#include

#include

#include

using namespace std;

bool cmp(char *a,char *b)

int main()

{int i,n;

char a[110][1100];

char *b[110];

scanf("%d",&n);

for(i=0;i按字串長度序

#include

#include

#include

#include

#include

#include

#include

using namespace std;

bool cmp(char *a,char *b)

{int n,m;

n=strlen(a);

m=strlen(b);

return nsort函式注意事項:

由於sort是c++中的函式,所以需要相應的標頭檔案以及std;

#include

using namespace std;   用之前一定要加。

bool型的被調函式只返回0或1。需要的標頭檔案#include。

對qsort有興趣的可以自己學一下,大同小異。自我感覺不如sort好用。

快速排序及acwing快排模板

快速排序是由c.a.r hoare在1960年發明的,謹以此篇向hoare大佬致敬!尋找標記 從一連串無序的元素中找到乙個標記x 交換 將小於等於x的元素都換到陣列左邊,將大於等於x的數都換到陣列右邊 分治 將此陣列分為兩個部分,使得左半邊的元素都不大於x,右半邊的數字都不小於x 遞迴 對左半邊陣列...

Java 快速排序,以及雙基快排

單基準快排 使用 quicksort arr,0,arr.length 1 排序整個陣列 private static void quicksort int arr,int left,int right return lt的左邊放小於基準值的值 gt的右邊放大於基準值的值 lt與gt其中乙個是基準值...

Java快速排序以及其優化(雙路快排 三路快排)

快速排序是屬於交換排序的基本思想。選擇乙個基準值val,把比val小的放在前面,比val大的放在後面,最後把val放在兩個區域中間,val就到了最終的位置。很明顯快排是乙個原地排序,也是乙個不穩定排序。空間複雜度 1.可以是為新陣列開闢額外空間o n 2.當然也可以在原陣列內交換得來o 1 時間複雜...