T1:bubble冒泡排序
(1)思路:兩次循環,外層循環從后面開始-作為一個支點,內層循環每次將當前需要排序的最大的那個元素一步步移動到該支點,最終升序排列完成
(2)代碼:
#include <stdio.h>
#include<iostream>
using namespace std; int n;
int a[10001];void swap(int &a,int &b)
{int tmp = a;a = b;b = tmp;
}int main(){scanf("%d", &n);for (int i = 1; i <=n; i++) scanf("%d", &a[i]);//已經輸入的數據全部存儲到了a[1-n]當中,利用bubble_sort進行排序for(int i = n-1;i>=1;i--){for(int j = 1; j<=i; j++){if(a[j] > a[j+1]){swap(a[j],a[j+1]);}}} for (int i = 1; i <= n; i++) printf("%d ", a[i]);return 0;
}
T2: 插入排序:
(1)思路:i從2到n,每次找到 a[i] 需要待的 位置 ,然后先后移 再存放
(2)代碼:
#include<iostream>int n;
int a[10001];int main()
{scanf("%d", &n);for (int i = 1; i <=n; i++) scanf("%d", &a[i]);//--以上處理了 元素 a1 - an 存儲到 a[1] -- a[n] 中 //--對這 n 個元素 進行 插入排序//初始 第一個 元素 設置 為 a[1]//然后 , i從 2-n對 元素 a[i] 進行找到第一個 比它 大的 元素 , 放到 這個元素的 前面for(int i=2;i<=n;i++){for(int j = 0;j<=i-1;j++){if(a[j] >= a[i]){//a[i] 需要 放到a[j] 這個位置, 然后 j-i-1之間的元素 全部后移一個位置,并且break跳出循環int tmp =a[i];for(int k = i-1;k>=j;k--){a[k+1] = a[k];} a[j] = tmp;break; // 跳出 這一次的 尋找 }}} //-- 以下 處理 輸出 部分 for (int i = 1; i <= n; i++) printf("%d ", a[i]);return 0;
}