9 19 陣列 氣泡排序和二分法

2022-06-01 12:24:09 字數 3001 閱讀 8267

陣列:相同型別資料的集合

強型別語言:1,陣列裡面只能存放相同資料型別的資料。

2,定義陣列時需要定乙個長度(可以存放元素的數量)

集合:1,可以存放任意型別的資料,

2,定義時候不需要制定長度

3,記憶體空間不連續

js陣列:1,可以存放任何型別的資料。

2,定義時候不需要制定長度

定義乙個陣列 var  attr = array(1,3.14,」aa」);  陣列裡面資料排列順序是0  1  2  3  4…

中間每個資料用逗號分割,

var   attr= attr(5);

var  attr=[1,3.14,」aa」] 直接用方括號來定義  輸出的時候

alert(attr[2]);

屬性length就是陣列長度,

alert(attr.length);  輸出陣列長度,

push追加元素

attr.push(「bb」); 就是將bb新增到attr數集裡面,

陣列  遍歷

for(var i=0;ialert(attr[i]);

foreach(  )方式遍歷  a是索引。

for(var a in attr)

alert(attr[a]);

例子

10個分數,求總分,最高分,最低分

var attr =[89,80,76,49,90,25,85,76,59,40];

var sum = 0;

for(var i=0;isum += attr[i];

alert(sum);成績總和

var zg = 0;

for(var i=0;iif(attr[i]>zg)

zg = attr[i];

alert(zg);最高成績

var zd = zg;

for(var i=0;iif(attr[i]zd = attr[i];

alert(zd); 最低成績。

新增去重

var attr = [2,5,10,16,27];

var sj = 27;

var cf = true;

for(var i=0; iif(sj == attr[i])

cf = false;

break;

if(cf)

attr.push(sj);

alert(attr.length);

else

alert("有重複值");

var attr = [1,8,26,4,15,3,7,42,9];

對陣列元素進行排序

氣泡排序

8 6 4 5 3 7 2 9 1     8

8 6 5 4 7 3 9 2 1     7

8 6 5 7 4 9 3 2 1     6

8 6 7 5 9 4 3 2 1     5

8 7 6 9 5 4 3 2 1     4

8 7 9 6 5 4 3 2 1     3

8 9 7 6 5 4 3 2 1     2

9 8 7 6 5 4 3 2 1     1 

兩個相鄰的元素進行比較,滿足條件元素互換

進行比較的輪數是陣列的長度減一

定義乙個交換使用的中間變數

var zj = 0;

控制比較的輪數

for(var i=0;i控制每輪比較的次數

for(var j=0;j如果下乙個元素大於當前元素

if(attr[j]zj = attr[j];  互換

attr[j] = attr[j+1];

attr[j+1] = zj;

alert(attr[0]);

attr.sort();

alert(attr[3]);

在陣列裡面查詢資料

var attr = [1,2,3,4,5,6,7,8,9];

要查詢的值

var v = 0;

迴圈遍歷的方式

var sy = -1;

for(var i=0;iif(attr[i]==v)

sy = i;

if(sy == -1)

alert("沒找到資料");

else

alert("該資料在陣列裡面的索引為:"+sy);

二分法查詢資料

最小索引

var minsy = 0;

var maxsy = attr.length-1;

var midsy ;

迴圈比較

while(true)

計算中間索引

midsy = parseint((minsy+maxsy)/2);

比較中間值和使用者的值

判斷中間索引的值是否等於使用者要查詢的值

if(attr[midsy] == v)

如果等於,就退出迴圈,找到了資料

break;

判斷是否只剩下兩個資料

if(midsy == minsy)

判斷兩個資料中的另外乙個是否等於使用者查詢的值

if(attr[midsy+1]==v)

找到了值,退出迴圈

midsy = midsy+1;

break;

else

沒有找到值,退出迴圈

midsy = -1;

break;

用來改範圍

if(attr[midsy]>v)

maxsy = midsy;

else

minsy = midsy;

alert(midsy);

二分法和氣泡排序

先放乙個 可以看到冒泡,選擇,插入排序的過程 冒泡 選擇 插入排序 前言 二分法是乙個優化演算法,在乙個基於有序列表中,列表從1到10000,如果要找乙個8899的數字,不用二分法的話,就是迴圈從一到10000,直到找到8899.但是,有沒有想過,前5000個都比8899小,所以能不能直接第一次就判...

氣泡排序 二分法

核心 掐頭去尾取中間.一次砍一半 二分查詢.每次能夠排除掉一半的資料.查詢的效率非常高.但是侷限性比較大.必須是有 序序列才可以使用二分查詢 兩種演算法 常規迴圈,遞迴迴圈 使用二分法可以提高效率,前提條件 有序序列 lst 22,33,44,55,66,77,88,99,101 238 345 4...

氣泡排序法和二分法排序

使用氣泡排序法對陣列進行排序的原理 陣列元素兩兩比較大小 function func arr print r arr arr array 0,11,2,3,24,5,16,7,48,9 func arr 使用快速排序法對陣列進行排序的原理 陣列元素進行樹狀分支,分結點比較大小,然後採用遞迴函式遞迴處...