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;
    

    一个个输出,最后换行。

  • 相关阅读:
    CSS布局设计
    Gulp自动化构建工具的简单使用
    雅虎前端优化的35条军规
    CSS预编译器less简单用法
    java 数据相除
    idea 配置文件中文显示问题
    postgresql 表触发器
    postgresql 自定义函数
    postgresql 自定义聚合函数
    CentOS 6.5 yum安装mysql5.6或其他版本【默认yum只能安装mysql 5.1】 by jason
  • 原文地址:https://www.cnblogs.com/7086cmd/p/algorithm01.html
Copyright © 2011-2022 走看看