zoukankan      html  css  js  c++  java
  • 算法01

    升入初中……然后报名CSP-J

    开始训练算法。
    今天还是回到C++吧。
    冒泡排序我觉的是算法中最基础的。所以我才记得住……
    MinGW版本的:

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
    	int sums;
    	cin >> sums;
    	int before[sums + 1], after[sums + 1];
    	memset(after, 0, sizeof(after));
    	for(int i = 1; i <= sums; i ++) {
    		cin >> before[i];
    		after[i] = before[i];
    	}
    	for(int i = 1; i <= sums - 1; i ++) {
    		for(int j = i; j <= sums; j ++) {
    			if(after[i] > after[j]) {
    				int temp = after[i];
    				after[i] = after[j];
    				after[j] = temp;
    			}
    		}
    	}
    	for(int i = 1; i <= sums; i ++) {
    		cout << after[i] << ' ';
    	}
    	cout << endl;
    	return 0;
    } 
    

    嗯……逐步分析下。
    代码写得比较保守,因此保留了before
    第一句:

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

    万能库,不用说吧。。。
    然后:

    	int sums;
    	cin >> sums;
    	int before[sums + 1], after[sums + 1];
    	memset(after, 0, sizeof(after));
    

    首先输入有多少的数,输入下。

    	for(int i = 1; i <= sums; i ++) {
    		cin >> before[i];
    		after[i] = before[i];
    	}
    

    逐个输入数组内数据。
    然后是双重排序:

    	for(int i = 1; i <= sums - 1; i ++) {
    		for(int j = i; j <= sums; j ++) {
    			if(after[i] > after[j]) {
    				int temp = after[i];
    				after[i] = after[j];
    				after[j] = temp;
    			}
    		}
    	}
    

    冒泡就是这样,如果不行,交换下,因此时间复杂度还是稳定的,是(O(n^2))

    	for(int i = 1; i <= sums; i ++) {
    		cout << after[i] << ' ';
    	}
    	cout << endl;
    	return 0;
    

    一个个输出,最后换行。

  • 相关阅读:
    2021.6.7
    2021.6.4
    2021.6.3
    2021.6.2 团队第二阶段冲刺第十天
    2021.6.1 团队第二阶段冲刺第九天
    2021.5.31 团队第二阶段冲刺第八天
    2021.5.30 团队第二阶段冲刺第七天
    逻辑卷的使用
    磁盘阵列
    磁盘配额
  • 原文地址:https://www.cnblogs.com/7086cmd/p/algorithm01.html
Copyright © 2011-2022 走看看