日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

排序和去重--说说两个简单常用的算法

發布時間:2023/12/19 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 排序和去重--说说两个简单常用的算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
排序 -- 最常用的就是冒泡排序。 冒泡排序: 它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。 這個算法的名字由來是因為越大的元素會經由交換慢慢“浮”到數列的頂端,故名。 for(i = 0; i < n; i++)
{
? ? for(int j = i +1; j< n ;j++)
? {
? ? if(array[i] > array[j])
? ? {

? ? ? ? int a =?array[i];

? ? ? ?array[i] =?array[j];

? ? ? ?array[j] = a;

? ? ?}

? }

}

理解冒泡算法很簡單:第一次以第一個數據為開始比較拿到數據中的最值放到原來的位置,然后往下移動一次,找尋另外的n-1個數據中的最值,放入第二個位置,一次這樣運行結束。

冒泡排序的時間復雜度計算:由于在循環的最中心的區域有數據比較和交換的執行,所以這三行代碼要計算時間復雜度,因此最短時間為n*(n-1)/2 ;最長時間是 n*3(n-1)/2;平均起來時間復雜度就是 O(n^2)。其實這個計算不合理,以為在循環的核心中有比較計算,比較計算也是需要耗費時間的,那么應該是n*(n-1)/2 和n*4(n-1)/2的均值。


? ? ?去重算法 -- 比較去重

?對于一個數據結構判斷重復的數組不能直接在原有的數據結構中剔除,這樣會導致數據結構索引溢出。

最常用最簡單的算法就是一次比較去重:

for(i = 0; i < n; i++)

{?

? ?for(int j = i + 1; j < n; j++ )

? {

? ? ?if(array[i] == array[j])

? ? ? {

? ? ? ? ?continue;

? ? ? ? }

? ? ? ?else

? ? ? {

? ? ? ? ?if(j == n-1)

? ? ? ? ?{

? ? ? ? ? ? //都比較完了?

? ? ? ? ? ? list.add(array[i]);

? ? ? ? ? }

? ? ? ?}

? }

}

時間復雜度平均值:[n*(n-1)/2 + n*2(n-1)/2]/2 ?~= O(1.5n^2)

空間復雜度平局值:O(n)



總結

以上是生活随笔為你收集整理的排序和去重--说说两个简单常用的算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。