程序算法之排序

程序算法之排序


作为一个学习软件工程的小白,今年大二了,感觉自己还在程序设计的边缘晃荡,有点危险。怎么办呢?只能想尽办法地让自己的脑子动起来,去思考。这篇博客主要是写关于排序的不同算法,希望自己认认真真地全都记下来✌

冒泡排序

学排序时的第一个算法就是冒泡排序了,它的时间复杂度为O( n 2 n^2 n2),这里我只写了从小到大排序的算法,从大到小只是动动手指就能解决的小事啦

解释一下冒泡排序的原理:
冒泡排序用第一个元素和第二个元素比较,用第二个元素和第三个元素比较……,如果前一个元素大于后一个二者交换位置,这样最先确定下来的是最后一个元素(也就是最大的元素);那么,最后一个元素就在第一层循环之后确定了,以此类推

#include <iostream>
using namespace std;

int main(){    
	int n;    
	cin >> n;    
	int *array = new int [n];
	
	for(int i = 0; i < n; i++)   
		cin >> array[i];  
		  
    	int tmp = 0;    
    	for(int i = 0; i < n; i++){        
    		for(int j = 0 ; j < n - i - 1; j++){            
    			if(array[j] > array[j+1]){                
    				tmp = array[j];                
    				array[j] = array[j+1];                
    				array[j+1] = tmp;            
    			}        
    		}    
    	}
    	
    	for(int i = 0; i < n; i++) 
    		cout << array[i] << "\t";
   }

选择排序

本来以为自己写的这个程序是冒泡排序,但是仔细想一想好像没有bubble,bubble的过程,立马ctrl+c,ctrl+v,好怕自己搞一些技术性的错误?,这个应该是选择排序没错了

解释一下选择排序的原理:
选择排序经过两层循环,在第二层循环中用一个临时变量记住第一层循环中的数组对应的数,然后用这个临时变量和它之后的所有元素进行比较,如果有比它小的数,两者交换位置;

#include <iostream>
using namespace std;
int main(){    
	int n;    
	cin >> n;    
	int *array = new int [n];
	
    	for(int i = 0; i < n; i++)   
    		cin >> array[i];     
    		  
    	for(int i = 0; i < n; i++){
		for(int j = i+1; j < n; j++){          
			int tmp = array[i]; 
			    
    			if(tmp > array[j]){                
    				array[i] = array[j];                
    				array[j] = tmp;            
    			}
    		}    
    	}        

	for(int i = 0; i < n; i++){        
		cout << array[i] << "   ";    
	}   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值