排序專題3(效能分析與專題小結)

2021-09-08 06:16:58 字數 2960 閱讀 8974

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 是由需求相關的問題所導致,這裡的需求包含了多方面,其中 效能需求 不容忽視。效能測試需求的質量直接影響著效能測試的效果。對效能需求分析不夠準確將導致即便後續各項工作進展順利,也很...