1. 時間複雜度
2. 簡單排序演算法
(1)選擇排序
(2)氣泡排序:從第i個數一直到n-1個數上一直找最小值或最大值,交換。public class selectionsoft ;
selectionsoft(arr);
}public static void selectionsoft(int arr)}}
for(int i:arr)}}
(3)插入排序:
(1)可以實現兩個數的值進行交換
int a=1,b=2;(a,b的值必須在記憶體中為兩塊不同的區域)(2) 尋找n個數**現了奇數次的數a = a^b; //a = 1^2,b = 2
b = a^b;//a = 1^2,b = 1^2^2 = 1^0 = 1
a = a^b;//a = 1^2^1 = 0^2 = 2,b=1;
public static void main(string args);printoddtimesnum(arr);}
printoddtimesnum(int arr)
//此時eor為這兩個要求的數的異或,eor!=0。
//eor!=0,這兩個出現了奇數次的數在同位次二進位制位中必然乙個為1乙個為0
//eor的二進位制位上必然有一位為1
int rightone = eor ^ (~eor+1);//提取eor二進位制位裡最右邊的1,其餘二進位制位全部變為0
int onlyone = 0;
for(int cur:arr)
}//執行完迴圈後,這個onlyone為待求的某乙個數
system.out.println(onlyone+" "+(onlyone^eor));//eor^onlyone 為待求的另外乙個數。
(1)二分查詢 o(logn)(在有序陣列裡查詢某個數是否存在)
public static void binarysoft(int arr,int x)(2) 在乙個有序陣列中,找》=某個數最左側的位置else if(x
else}}
public static void main(string args)
;binarysoft(arr,4);
}public static void binarysoft(int arr,int x)
{int min = 0,max = arr.length;
int flag = 0;
while(minelse if(x(3) 區域性最小值問題
1 時間複雜度和簡單排序
常數的時間操作 乙個操作如果和資料量沒有關係,每次都是固定時間操作,叫做常數操作。時間複雜度常用o 讀作big o 來表示。具體來說,在常數運算元量的表示式中,只要高階項,不要低階項,也不要高階項的係數,剩下的部分記為f n 那麼時間複雜度記為 o f n 對乙個長度為n的陣列進行排序 演算法 依次...
01 時間複雜度 空間複雜度
1 時間頻度 乙個演算法中的語句執行次數稱為語句頻度或時間頻度。記為t n n稱為問題的規模,當n不斷變化時,時間頻度t n 也會不斷變化。2 時間複雜度 若有某個輔助函式f n 使得當n趨近於無窮大時,t n f n 的極限值為不等於零的常數,則稱f n 是t n 的同數量級函式。記作t n f ...
1 時間複雜度
演算法的計算成本涵蓋許多方面,為確定計算成本的度量標準,我們不妨從計算速度這一重要因素入手。但是這一問題並不是容易直接上手回答,原因在於,運算時間是由許多因素綜合作用而決定的。即使是同一演算法,對於不同的輸入所需的運算時間並不相同。問題規模往往是決定計算成本的主要因素。一般的,問題規模越相近,相應的...