zoukankan      html  css  js  c++  java
  • 几种常见的排序算法

    1、冒泡排序

    算法描述:



    代码实现:

    void bubble_sort(int* a ,int n){
    	bool changed;
    	do{
    		changed = false;
    		for(int i = 1 ; i < n ; ++i){
    			if(a[i] < a[i-1]){
    				swap(a[i],a[i-1]);
    				changed = true;
    			}
    		}
    	}while(changed);
    }


    2、插入排序

    算法描述:




    代码实现:

    void insert_sort(int* a , int n){
    	for(int i = 1; i < n ; ++i ){
    		int t  = a[i];
    		int j;
    		for( j = i ; j > 0 && t < a[j-1]; --j){
    			a[j] = a[j-1];
    		}
    		a[j] = t;
    	}
    }
    


    3、快速排序

    算法过程描述:



    代码实现:

    void quick_sort(int* a , int n){
    	if( n <= 1){
    		return ;
    	}
    
    	if( n== 2){
    		if(a[1] < a[0]){
    			swap(a[1],a[0]);
    		}
    	}
    
    	swap(a[n/2],a[0]);
    	int jie = a[0];
    	int* l = a + 1;
    	int* r = a + n - 1;
    
    	while( l < r ){
    		while(l<r && (*l < jie)){
    			++l;
    		}
    
    		while(a<r && (*r>=jie)){
    			--r;
    		}
    
    		if(l < r){
    			swap(*l,*r);
    		}
    	}
    
    	if(*r < jie){
    		swap(*r,a[0]);
    	}
    
    	quick_sort(a,r-a);
    	quick_sort(r+1,n-1-(r-a));
    
    }
    


    4、选择排序

    代码实现:

    void choose_sort(int* a , int n){
    	for(int i = 0 ; i < n -1 ; ++i ){
    		int min = i;
    		for(int j = i+1 ; j < n ; ++j ){
    			if(a[j] < a[min]){
    				min = j;
    			}
    		}
    
    		swap(a[i],a[min]);
    	}
    }


    算法描述:



  • 相关阅读:
    es6学习笔记
    vue.js项目目录结构说明
    js 数组操作总结
    js 数组去重方法
    HTTP协议三次握手过程
    MVC与MVVM模式对比
    谱面编辑器
    LL谱面分析和难度标定
    SLP的模块结构
    LL基本姿势
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3236929.html
Copyright © 2011-2022 走看看