java冒泡排序的做法 冒泡排序算法外層循環(huán)為什么要減一?
冒泡排序算法外層循環(huán)為什么要減一?最外層循環(huán)再控制輪數(shù),下標(biāo)又是從0正在,要是10個(gè)數(shù),這估計(jì)是從a【0】~a【9】,輪數(shù)那是8輪。后面最后一個(gè)數(shù)和前面那一個(gè)數(shù)比較完,也就就在位置上固定不動(dòng),不需再接
冒泡排序算法外層循環(huán)為什么要減一?
最外層循環(huán)再控制輪數(shù),下標(biāo)又是從0正在,要是10個(gè)數(shù),
這估計(jì)是從a【0】~a【9】,輪數(shù)那是8輪。后面最后一個(gè)數(shù)和前面那一個(gè)數(shù)比較完,也就就在位置上固定不動(dòng),不需再接受比較比較。所以減一。
例子:對(duì)n個(gè)數(shù)據(jù)進(jìn)行排序。
冒泡排序法的思路是:將每一輪的首元素和這一輪的現(xiàn)全部元素并且都很,如果沒(méi)有發(fā)現(xiàn)到后面的元素大于1首元素的話,就將小的元素與首元素進(jìn)行交換,能保證每當(dāng)比較好之后,首元素中都儲(chǔ)存時(shí)比較好結(jié)果的最小值。
a【0】和a【1】~a【n-1】第二次進(jìn)行都很,最小值放到a【0】中。乘以3
a【n-2】和a【n-1】都很,最小值放到a【n-2】中,剩下的的那個(gè)元素就放進(jìn)了a【n-1】中,后面在沒(méi)有元素了,也很都結(jié)束了。
而此:n個(gè)數(shù),排序需要n-1輪,在輸入的第i輪中,將首元素a【i】I和妖軍的全部元素兩兩比較,將你每次也很結(jié)果的最小值放進(jìn)a【i】中,這一輪比較好已經(jīng)結(jié)束后,
a【i】中能保存這一輪的最小值。所以我泡聲法排序需要精神沖擊循環(huán),外從循環(huán)壓制比較好的論述,那從循環(huán)主要用于這里有這一輪的最小值,將這一輪的,將這一輪的最小值放在旁邊這里有人的手元素中。
冒泡排序是不是穩(wěn)定排序?
冒泡排序是把小的元素向后調(diào)或者把大的元素朝后調(diào)。也很是垂直相交的兩個(gè)元素都很,交換也不可能發(fā)生在這兩個(gè)元素之間。因此,如果兩個(gè)元素相等,我想你是絕對(duì)不會(huì)再無(wú)聊地把他們倆交換下的;如果不是兩個(gè)之和的元素是沒(méi)有毗鄰,那就即使按照前面的兩兩相互交換把兩個(gè)東北邊站了起來(lái),這時(shí)候也不會(huì)相互交換,所以才完全相同元素的前后順序并沒(méi)有什么轉(zhuǎn)變,所以冒泡排序算法是一種比較穩(wěn)定排序算法。
冒泡排序一共多少循環(huán)?
冒泡排序要用單雙層循環(huán),要是有n個(gè)數(shù),第一輪循環(huán)時(shí),第二層循環(huán)執(zhí)行n-1次;第二輪循環(huán)時(shí),第二層循環(huán)負(fù)責(zé)執(zhí)行n-2次;直到最后一輪,第二層循環(huán)不能執(zhí)行1次。
所以冒泡排序算法的共計(jì)算次數(shù)是(1n-1)(n-1)/2n(n-1)/2
這里簡(jiǎn)單的寫(xiě)了下實(shí)現(xiàn)程序:
int[]arr{…………}//待排序數(shù)組,長(zhǎng)度為n
inttemp0//主要用于同樣的正式變量
for(inti0iltn-1i)
{
for(intj0jlti-1j)
{
if(arr[j1]ltarr[j])
{
temparr[j1]
arr[j1]arr[j]
arr[j]temp
}
}
}