判斷素數:判斷乙個數是否是素數,n不必被2~(n-1)的整數整除,只需被2~n/2之間的整數整除即可,甚至只需要被2~根號n之間的整數整除即可。
最大公約數求法:a與b的最大公約數是指能同時整除a與b的最大的整數
最小公倍數求法:a與b的最小公倍數是可以同時被a和b整除的最小整數
查詢的方法:
順序查詢:從表的一端開始,向另一端逐個進行記錄的關鍵字和給定值的比較。若某個記錄的關鍵字與給定值相等,則查詢成功,並給出記錄在查詢表中的位置;若經過比較,所有記錄的關鍵字與給定值都不相等,則查詢失敗,給出失敗資訊。
折半查詢(二分法查詢):要求查詢表中的記錄必須按關鍵字有序排列,並且查詢表必須以順序方式儲存。其查詢過程為:在有序的查詢表中,取中間位置的記錄作為比較物件,若給定值與中間位置記錄的關鍵字相等,則查詢成功;若給定值大於中間位置記錄的值,則繼續查詢大的一邊,若給定值小於中間位置記錄的關鍵字值,則繼續查詢小的一邊。依次不斷重複上述查詢過程,直到查詢成功為止。若在查詢範圍內所有記錄的關鍵字都與給定值不等,則查詢失敗。
排序的方法:
比較相鄰兩個資料,如果第乙個比第二個大,就交換兩個數;
對每乙個相鄰的數做同樣的工作,這樣從開始一隊到結尾一隊在最後的數就是最大的數;
針對所有元素做上面的操作,除了最後乙個;
重複1~3,直到順序完成。
**視覺化:
void bubblesort(int arr, int a)//氣泡排序演算法
int temp;
for (int i = 0; i < a; i++)
}} printf(arr, a);
}
在乙個長度為n的無序陣列中,第一次遍歷n-1個數找到最小的和第乙個數交換;
第二次從下乙個數開始遍歷n-2個數,找到最小的數和第二個數交換;
重複以上操作直到第n-1次遍歷最小的數和第n-1個數交換,排序完成。
演算法描述:
void selectsort(int arr, int a)//選擇排序
for (int i = 0; i < a; i++)
}} arr[i] = minkey;
}
從數列中挑出乙個元素作為基準;
重新排列數列,把所有的比基準小的放在基準前面,反之放在後面(一樣大可任意一邊)完成後基準處在分割槽的中間位置;
通過遞迴呼叫把小於基準元素和大於基準元素的子串行進行排序。
**實現:
//程式中可以通過 qsort函式呼叫
int compinc(const void* a, const void* b)//快排遞增
int compdec(const void*a, const void*b)//快排遞減
//直接使用即可
void quicksort(int left, int right)
else
//再找左邊的
while (a[i] <= temp && i < j)
//交換兩個數在陣列中的位置
if (i < j)
}} //最終將基準數歸位,放在第i個位置
a[left] = a[i];
a[i] = temp;
quicksort(left, i - 1);//繼續處理左邊的,這裡是乙個遞迴的過程
quicksort(i + 1, right);//繼續處理右邊的,這裡是乙個遞迴的過程
}
最大公約數和最小公倍數
13 05 10 15 25 最大公約數和最小公倍數的定義要弄清,程式設計思路 把兩個數中最大的數對最小的數取模運算,1.判斷最大值 2.如果num1 num2 0,最大公倍數即是小的那個數,最小公倍數及兩數相乘除以最大公約數 3.如果num1 num2!0 把較小的值賦給最大值,在把最大值取模最小...
最大公約數和最小公倍數
描述 求兩個正整數的最大公約數和最小公倍數 輸入 兩個正整數a,b 輸出 兩個正整數的最大公約數 最小公倍數 樣例輸入 4 3 樣例輸出 1 12 題目 nupt include int max int a,int b while d 1 else return 1 int min int a,in...
最大公約數和最小公倍數
眾所周知,我是好人!所以不會出太難的題,題意很簡單 給你兩個數n和m,問你有多少對正整數對最大公約數是n,最小公倍數是m 最後友情提供解題 我真是太好人了 void solve printf d n ans 祝大家ac愉快!最好ak,送某揚兌現諾言 輸入第1行是乙個整數t,表示共t組資料。接下來是t...