數(shù)據(jù)結(jié)構(gòu): 有一組關(guān)鍵字[40,58,12,33,90,20,80,65],請對其進(jìn)行冒泡排序,寫出相應(yīng)的算法。

2023-01-21 20:48

1個回答
//把最小值放在最前面的升序排序
int?nums[]?=?{?40,?58,?12,?33,?90,?20,?80,?65?};
for?(int?i?=?0;?i? for?(int?j?=?i;?j? if?(nums[i]?>?nums[j])?{
int?tmp?=?nums[i];
nums[i]?=?nums[j];
nums[j]?=?tmp;
}
}
}

?//把最小值放在最后面的降序排序

int?nums[]?=?{?40,?58,?12,?33,?90,?20,?80,?65?};
System_out.println(Arrays.toString(nums));
for?(int?i?=?nums.length?-?1;?i?>?0;?i--)?{
for?(int?j?=?0;?j? if?(nums[j]? int?tmp?=?nums[j];
nums[j]?=?nums[j?+?1];
nums[j?+?1]?=?tmp;
}
}
System_out.println(Arrays.toString(nums));
}

//或者每次都把最大值往后排.但是前面也會變得稍微有序一點

int?nums[]?=?{?40,?58,?12,?33,?90,?20,?80,?65?};
for?(int?i?=?0;?i? for?(int?j?=?0;?j? if?(nums[j]?>?nums[j?+?1])?{
int?tmp?=?nums[j];
nums[j]?=?nums[j?+?1];
nums[j?+?1]?=?tmp;
}
}
System_out.println(Arrays.toString(nums));
}

不過這幾種的代碼時間復(fù)雜度都是O(n^2),好像有一種改進(jìn)算法。時間復(fù)雜度為O(n)的,但是現(xiàn)在想不起來了..等想起來的給你貼上去.

相關(guān)問答
兩道數(shù)據(jù)結(jié)構(gòu)排序的題目
1個回答2022-09-16 13:33
不懂你問得什么
用冒泡排序算法對數(shù)據(jù)序列(49,38,65,97,76,134,27,49)
1個回答2022-12-16 00:20
思路解析:(49,38,65,97,76,13,27)→(38,49,65,76,13,27,97)→(38,49,65,13,27,76,97) 答案:2
在數(shù)據(jù)結(jié)構(gòu)中,給出一組關(guān)鍵字:66,30,78,53,6,18,10,11,20,49,當(dāng)要求用快速排序法按升序排序.
1個回答2022-09-19 00:25
簡略說一下一趟快速排序思想: 1)從右邊right指針處找一個比要比較數(shù)(通常是第一個數(shù))小的,找到后放入left指針,left右移一格。 2)從左邊left指針找一個比要比較數(shù)(通常是第一個數(shù))大...
全文
冒泡排序算法
1個回答2022-09-17 16:40
冒泡排序,是指計算機的一種排序方法,它的時間復(fù)雜度為O(n^2),雖然不及堆排序、快速排序的O(nlogn,底數(shù)為2),但是有兩個優(yōu)點:1.“編程復(fù)雜度”很低,很容易寫出代碼;2.具有穩(wěn)定性,這里的穩(wěn)...
全文
有一組鍵值65,30,72,80,21,28,50,采用冒泡排序法由小到大排序,寫出每趟排序結(jié)果
1個回答2022-12-13 04:23
第1趟排序結(jié)果:30 65 72 21 28 50 80 第2趟排序結(jié)果:30 65 21 28 50 72 80 第3趟排序結(jié)果:30 21 28 50 65 72 80 第4趟排序結(jié)果:21 28...
全文
給出一組關(guān)鍵字進(jìn)行冒泡排序,列出每一遍排序后關(guān)鍵字的排列次序.
1個回答2022-07-01 20:31
可以見兩個數(shù)組,Ai是(19 01 26 92 87 11 43 87 21),有N個數(shù),bi=1。 先排序輸出Ai。 之后if (a[i]=a[i+1];i=0;i<=n-1;i++) ...
全文
數(shù)據(jù)結(jié)構(gòu)希爾排序,第一趟d1=5分五組排序,第二趟d2=2分兩組排序我排序出錯?
2個回答2023-07-27 03:41
10個數(shù)的希爾排序,一般伍顫是按照(5,2,1)來排序的,但是你這個題目采用的是(5,3,1),所以分組跟你的結(jié)果有出入。希爾排序本身要求d250??8? 30??40 20? 90??26? 38...
全文
什么叫冒泡排序
5個回答2022-09-26 22:07
舉個例子: 比如說有一組數(shù)組:1,6,3,9,7,4 想要給它做排序,把這個數(shù)組從小到大的排列 這里就可以使用冒泡算法(就像河里的泡向上冒,小的泡會在大的泡的上面一樣) 這里冒泡排序就是小的數(shù)字一個...
全文
冒泡排序
1個回答2023-08-09 09:10
要看你的冒泡法是升序還是降序,不過大體都是一樣的,主要就是那兩個for循環(huán)那里的問題。我這里用的降序: #include void main() { int n[10]; int i,...
全文