• 算法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;
    

    一个个输出,最后换行。

  • 相关阅读:
    C#中有关string和byte[]转换的问题
    慎用HyperThreading Technology
    MSN不能登录 解决“0x81000370错误”
    Life Is a Gamble
    Application Wizard生成的项目文件简介
    在Word中如何进行半行输入
    几个有用的短语
    C#学习之接口
    C++中不容易记忆的访问属性问题
    进一步理解VC中的句柄
  • 原文地址:https://www.cnblogs.com/7086cmd/p/algorithm01.html
Copyright © 2020-2023  润新知