1. 程式人生 > >很多很多排序(未完待更 每天佛系更新)

很多很多排序(未完待更 每天佛系更新)

1.氣泡排序

這個寫法是先把小的數字排出來然後再排出來大的數字

程式碼:

#include <bits/stdc++.h>
using namespace std;

const int maxn = 1e5 + 10;
int n;
int num[maxn];

void BubbleSort(int L, int R) {
    for(int i = L; i <= R; i ++) {
        int flag = 0;
        for(int j = R; j > i; j --) {
            if(num[j] < num[j - 1
]) { swap(num[j], num[j - 1]); flag = 1; } } if(!flag) break; } } int main() { scanf("%d", &n); for(int i = 0; i < n; i ++) scanf("%d", &num[i]); BubbleSort(0, n - 1); for(int i = 0; i < n; i ++) { printf(
"%d", num[i]); printf("%s", i != n - 1 ? " " : "\n"); } return 0; }
View Code

2.插入排序

從前向後依次把每一個 $num[i]$ 插入到正確的位置

 程式碼:

#include <bits/stdc++.h>
using namespace std;

const int maxn = 1e5 + 10;
int n;
int num[maxn];

void InsertSort(int L, int R) {
    for
(int i = L; i <= R; i ++) { for(int j = i; j > L; j --) { if(num[j] < num[j - 1]) swap(num[j], num[j - 1]); else break; } } } int main() { scanf("%d", &n); for(int i = 0; i < n; i ++) scanf("%d", &num[i]); InsertSort(0, n - 1); for(int i = 0; i < n; i ++) { printf("%d", num[i]); printf("%s", i != n - 1 ? " " : "\n"); } return 0; }
View Code

3.選擇排序

每次在上一次排好剩下的元素李選最小的排出來

程式碼:

#include <bits/stdc++.h>
using namespace std;

const int maxn = 1e5 + 10;
int n;
int num[maxn];

void SelectSort(int L, int R) {
    for(int i = L; i < R; i ++) {
        int minn = num[i];
        int temp = i;
        for(int j = i + 1; j <= R; j ++) {
            if(num[j] < minn) {
                minn = num[j];
                temp = j;
            }
        }
        swap(num[i], num[temp]);
    }
}

int main() {
    scanf("%d", &n);
    for(int i = 0; i < n; i ++)
        scanf("%d", &num[i]);

    SelectSort(0, n - 1);
    for(int i = 0; i < n; i ++) {
        printf("%d", num[i]);
        printf("%s", i != n - 1 ? " " : "\n");
    }
    return 0;
}
View Code