題目描述:
給你一個整數數組 nums,請你將該數組採用冒泡方式進行升序排列。
解題思路:
-
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
-
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。
-
針對所有的元素重複以上的步驟,除了最後一個。
-
持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
代碼:
Python寫法:
class Solution(object):
def solution(self, nums):
n = len(nums)
for i in range(n-1):
for j in range(i+1, n):
if nums[i] > nums[j]:
temp = nums[i]
nums[i] = nums[j]
nums[j] = temp
return nums
C++寫法:
#include<iostream>
using namespace std;
int main()
{
int a[10] = {1, 2, 4, 5, 6, 10, 4, 2, 8, 6};
for(int i = 0; i < 10; i++)
for(int j = i+1;j < 10; j++)
if(a[i] > a[j])
{
int t = a[i];
a[i] = a[j];
a[j] = t;
}
for(i = 0; i < 10; i++)
cout<< a[i] <<" ";
cout << "\n";
return 0;
}
C語言:
#include <stdio.h>
int main(){
int nums[] = {4, 9, 5, 6, 8, 3, 2, 7, 10, 1};
int temp;
for(int i = 0; i < 10; i++){
for(int j = i+1; j < 10; j++){
if (nums[i] > nums[j]){
temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
}
}
}
for(i = 0; i < 10; i++)
printf("%d ", nums[i]);
printf("\n");
return 0;
}
題目來源: