氣泡排序與查重 案列分析

2021-10-20 07:42:30 字數 2649 閱讀 5468

現有乙個長度為10的陣列,陣列中的每個元素為0-1000的隨機數字,現請將此陣列按公升序排列並列印在頁面上,且不能有重複數字。

題目分析:

檢視題目,我們發現題目有如下幾個個要求:

但是還有乙個隱藏要求。因為進行去重操作後,陣列的長度有可能會減少。由於題目要求輸出長度為10的陣列。所以我們要在最後進行最後一步操作:

步驟分析:

獲取隨機數組

獲取乙個空陣列arr,並建立乙個for迴圈,迴圈執行10次,每執行一次生成乙個0-1000的乙個隨機數並賦值給arr,並用concat();方法拼接十次,生成乙個新陣列。最後將其封裝成乙個函式。

var arr = ; 			

function getrandomnumber()

return arr;

} // console.log

(getarr)

; //檢視獲取的隨機數陣列

將陣列公升序排列

排序的方法有很多,常用的有氣泡排序,快速排序,插入排序等等。這裡我們選擇比較簡單的氣泡排序。 氣泡排序的演算法也很簡單,首先我們先建立乙個兩層迴圈,外迴圈和內迴圈執行的都是第乙個數和第二數比較,第二個數與第三個數比較……雖然他們執行的過程都相同,但是巢狀在一起就很有意思了:

外迴圈先獲取第乙個數字,然後進入內迴圈,內迴圈將這個數字和第二數比較,第三個數、第四個數……一直到最後乙個數,然後內迴圈執行完畢,再回到外迴圈,獲取第二個數字,然後在進入內迴圈,然後內迴圈將這個數字和剩下的數字依次比較……

當外迴圈獲取完第10個數時,迴圈結束

內迴圈除了比較大小外,還要進行換位操作。因為我們要進行公升序操作,當數字大於被比較的數字時,進行兩個數的調換。

兩個數進行調換時,不能直接調換。例如:

var a = 1; 

var b =2;

a = b;

b = a;

console.log

(a,b)

;//輸出結果都為2,並沒有實現兩個數互換。

而正確的做法是應該是再建立乙個空變數temp,然後將第乙個數放到空變數中,第二個數傳給第乙個數的變數,然後再將temp存放的數傳給第二個 數,這樣就實現了兩個數之間的交換。

這就像兩杯飲料,一杯雪碧,一杯可樂。沒有第三個被子的幫助下,是不能完成雪碧和可樂互相調換。

正確寫法:

var a = 1; 

var b =2;

var temp = a;

a = b;

b = temp;

console.log

(a,b)

;//輸出結果為2和1,實現兩個數互換。

mysort()}}

return getarr;

} // console.log

(sort()

);

將陣列去重

去重的方法也有很多,這裡我們也選用乙個比較簡便的方法。 先宣告乙個空陣列,遍歷排序後的陣列,遍歷出的每乙個數與新陣列的值比較,如果沒有,即索引號(下標)的值為-1,則將該數字用push方法新增到新陣列尾部,最終生成乙個去重後的陣列。

//去重 			

var gotarr = mysort()

;

function norepeat()

} return newarr;

}

將陣列補位 我們可以這樣理解,補位之前的陣列長度有可能是小於10,如果小於10就進行補位,否則就不執行操作。 如果長度小於10,我們就再來一遍獲取隨機數,排序以及查重操作,重複這個步驟直到陣列長度為10。

//補位 			

var renewarr = norepeat()

;

function add()}}

return arr;

}

完整**:

//獲取隨機數陣列

var arr = ;

function getrandomnumber()

return arr;

} // console.log

(getarr)

; //氣泡排序

var getarr = getrandomnumber()

; function mysort()}}

return getarr;

} // console.log

(sort()

);//去重

var gotarr = mysort()

; function norepeat()

} return newarr;

} //補位

var renewarr = norepeat()

; function add()}}

return arr;

} document.write

(add()

);//輸出結果

python案列基礎方法與分析

import pandas as pd import numpy as np import random 設定最大列和最大行 資料就不會被省略 pd.set option max columns 1000 pd.set option max row 1000000000 pd.set option ...

氣泡排序介紹與分析

氣泡排序應該就是我們最開始學習並且最簡單的排序了,主要思想就是 假定這裡從小到大排序 從數列的第乙個元素開始一次與後面的元素比較 當然也可以選擇從最後乙個元素與往前面比較 如果比後者大側交換,達到最大數冒泡到最後乙個元素的位置 如果是比後者小側接著比較。這裡可以用乙個標誌exchange優化一下氣泡...

演算法設計與分析 氣泡排序

1 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。2 對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。3.針對所有的元素重複以上的步驟,除了最後乙個。4.持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。時間複雜度 若檔案...