public class main
else if (a[i]>big_2&& a[i] != big_1)
big_2 =a[i];
}system.out.println("最大值"+big_1+"次大值"+big_2);
return -1;
}public static void findandprintclosest(int arrayone, int expectedsum)
else if (arrayone[leftindex] + arrayone[rightindex] < expectedsum) else //if
}//end of while
system.out.println("----------->"+resultone+"----------->"+resulttwo);
}public static void findclosedsum(int a,int expectedsum)
//插入排序--直接插入排序
public static void insertsort_first(int a)
return -1;
}//插入類排序--折半插入排序
/*效能分析:
時間複雜度:與直接插入進行比較,二分排序的差別僅僅在於其查詢插入位置的不同,
由於二分查詢的時間複雜度為o(logn),
在最好情況下 所有元素本身有序,不需要進行移動,那麼這個時候的時間複雜度為o(nlogn)
在最壞情況下,時間複雜度為o(n^2)
空間複雜度為o(1)
穩定性:穩定排序
*/public static void binarysort(int a)
a[low] = temp;}}
//插入類排序--希爾排序
/*希爾排序:
*希爾排序 又被稱之為縮小增量排序。只不過是將待排序的序列按照某種規則分成幾個子串行
* 分別對子序列進行排序,這個規則體現的事增量的選取**
* 效能分析:
* 時間複雜度:這裡選擇的增量為n/2 (也就是每個元素之間的間隔)
* 直到為1這個時候的時間複雜度為o(n^2)。
* 空間複雜度:為o(1)
* 穩定性,由於值相同的元素可能被分入不同分組,導致位置改變,
* 最終合併的時候導致前後位置不一致,因而是不穩定的排序。**/
public static void shellsort_first(int a)}}
}incrementnum = incrementnum/2;}}
//交換類排序--起泡排序
/*效能分析:
時間複雜度:最壞的情況下是o(n^2),最好的情況下是o(n) 平均情況下是o(n^2)
空間複雜度:o(1)
穩定性:穩定排序
*/public static void bubblesort(int a)
for (int i = len; i >0 ; i--)//選擇元素
}private static void adjustheap(int a,int low,int high)
else
break;
}將剛剛的父節點中的資料賦值給新位置
a[i] =temp;
}//歸併排序--二路歸併排序
/*效能分析:
時間複雜度:主要有兩個操作,遞迴和歸併,其中遞迴次數為logn,每次歸併需要的基本操作次數為n
因而其時間複雜度為o(nlogn)(最好,最壞,平均)
因而其是與初始序列無關的排序。
空間複雜度:因為其需要乙個n個元素大小的元素實現排序好的元素暫存,因為其空間複雜度為o(n)
穩定性:穩定排序
每兩個有序表合併成乙個有序表時,若分別在兩個有序表**現有相同排序碼,
則會使前乙個有序表中相同排序碼先複製,後一有序表中相同排序碼後複製,從而保持它們的相對次序不會改變。
所以,二路歸併排序是一種穩定的排序方法
*/public static void mergesort(inta ,int low,int high)
}private static void merge(int a,int low,int mid,int high)
while (leftstart<=mid)
temparr[tempindex++] = a[leftstart++];
while (rightstart<=high)
temparr[tempindex++] = a[rightstart++];
while(low<=high)
}}/*
幾個總結:
1.複雜性
(1)時間複雜度
平均情況下:快速排序,希爾排序,歸併排序,堆排序的時間複雜度都為o(nlogn),
其他排序(直接插入排序,折半插入排序、簡單選擇排序、氣泡排序)都是o(n^2)
基數排序為o(rd)。
最壞情況下:快速排序的時間複雜度為o(n^2),其他排序和平均情況相同。
注:快些以nlogn速度歸隊(快速、希爾、歸併、堆排序)。
(2)空間複雜度
幾個個例:快速排序o(logn) 歸併排序o(logn) 基數排序o(rd) 其他都是o(1)
(3)其他
起泡起的好容易成o(n) 直接插容易插成o(n) 不需要查詢插入位置(內部迴圈不需要執行)
2.穩定性
快速排序、簡單選擇排序、堆排序、希爾排序(插入類排序)是不穩定的排序
注:學習好痛苦呀 快希選一堆朋友聊天吧
3、細節
(1)一次排序能到達最終位置
交換類的排序(氣泡排序快速排序)、選擇類的兩種排序(簡單選擇排序,堆排序)
(2)關鍵字比較次數和初始序列無關
簡單選擇排序、折半插入排序
(3)排序趟數和原始序列有關
交換類排序:起泡排序,快速排序
*/
論「效能需求分析」系列專題(一)之 效能需求剖析
軟體需求對於軟體研發和測試工作來說極端重要。美國standish group 公司的報告顯示,失敗及延期專案中,超過60 是由需求相關的問題所導致,這裡的需求包含了多方面,其中 效能需求 不容忽視。效能測試需求的質量直接影響著效能測試的效果。對效能需求分析不夠準確將導致即便後續各項工作進展順利,也很...
論「效能需求分析」系列專題(一)之 效能需求剖析
軟體需求對於軟體研發和測試工作來說極端重要。美國standish group 公司的報告顯示,失敗及延期專案中,超過60 是由需求相關的問題所導致,這裡的需求包含了多方面,其中 效能需求 不容忽視。效能測試需求的質量直接影響著效能測試的效果。對效能需求分析不夠準確將導致即便後續各項工作進展順利,也很...
論「效能需求分析」系列專題(一)之 效能需求剖析
軟體需求對於軟體研發和測試工作來說極端重要。美國standish group 公司的報告顯示,失敗及延期專案中,超過60 是由需求相關的問題所導致,這裡的需求包含了多方面,其中 效能需求 不容忽視。效能測試需求的質量直接影響著效能測試的效果。對效能需求分析不夠準確將導致即便後續各項工作進展順利,也很...