標籤:
1 選擇排序
原理 int[] arr = new int[] {2,4,21,44,10};
數組的第一個元素 分別與其他的元素比較 如果比那個元素的值小 那麼兩個值就互換 都比較之後從而得到這個數組裡面的 那個最大值 這個最大值就在這個數組的0索引上 。現在我們找出了第一名 那麼 第二名怎麼找呢,道理很簡單了,就是把剩下的那些元素看作是一個新的數組 ,再重複上面的操作就會找出 第二名 ,以此類推。
過程
arr[0] 比較------arr[1] arr[1] 比較-------------arr[2] arr[2] 比較-----arr[3] arr[3]比較arr[4]
比較------arr[2] 比較-------------arr[3] 比較-----arr[4]
比較------arr[3] 比較-------------arr[4]
比較------arr[4]
5個元素 只需要比較4次 ,那麼就是N個元素 需要比較N-1次 就可以了,也就是被比較的數 取到N-1 位上就可以了
用一個for 來實現 左側元素值的提取 (arr.length-1 是數組的最後一個角標位)
for(int x=0;x<arr.length-1;x++)
{ arr[x]}
用第二for 來實現 右側 參與比較的元素的提取
for (int y=x+1;y<arr.length;y++)
{arr[y])
if 實現比較 if(arr[x]<arr[y])
我們這裡利用^來實現 2個元素的置換
arr[x]=arr[x]^arr[y]
arr[y]=arr[x]^arr[y]
arr[x]=arr[x]^arr[y]
我們整合代碼 for(int x=0;x<arr.length-1;x++)
{ for (int y=x+1;y<arr.length;y++)
{ if(arr[x]<arr[y])
{
arr[x]=arr[x]^arr[y] ;
arr[y]=arr[x]^arr[y] ;
arr[x]=arr[x]^arr[y] ;
}
}
}
2
冒泡排序
原理 int[] arr = new int[] {2,4,21,44,10};
從數組的0角標開始 每每相鄰的2個元素相互比較 最值互換 這樣比較到最後 最值就出現在數組的末位。除去末位的元素 剩下的元素 右從0角標開始 相鄰的元素相互比較 最值互換 最後最值出現在倒數第二位 依次類推,完成排序。
步驟 1 利用for 來實現 兩兩相鄰元素的提取
for(int x=0; x<arr.length-1;x++)
{
arr[x] arr[x+1]
}
2 if 實現比較 if (arr[x] <arr[x+1])
3 實現互換 arr[x] =arr[x]^arr[x+1];
arr[x+1] =arr[x]^arr[x+1];
arr[x] =arr[x]^arr[x+1];
4 利用for 實現 一個數組需要比較多少次
for(int w=0;w<arr.length;w++)
整合 for(int w=0;w<arr.length;w++)
{ for(int x=0;x<arr.length-1;x++)
{ if(arr[x]<arr[x+1] )
{
arr[x] =arr[x]^arr[x+1];
arr[x+1] =arr[x]^arr[x+1];
arr[x] =arr[x]^arr[x+1];
}
}
}
選擇排序與 冒泡排序的區別 選擇排序的最值是從 0角標開始排列的 冒泡排序的最值 是從末角標開始的
JAVA 蹣跚自學之 第六日 續 數組排序 之 選擇 冒泡