zoukankan      html  css  js  c++  java
  • 笔记1-排序

    排序算法:

    #include <iostream>
    
    //冒泡排序
    void bubbleSort(int array[],int size){
        
        std::cout << "array= " << array << std::endl;
        
        for (int end = size-1; end > 0; end--) {
            
            for (int begin = 1; begin <= end; begin++) {
                
                if (array[begin] < array[begin-1]) {
                    
                    int tmp = array[begin];
                    
                    array[begin] = array[begin-1];
                    
                    array[begin-1] = tmp;
                    
                }
            }
        }
        
        for(int i = 0; i < size; ++i)
        {
            printf("%d ", array[i]);
        }
    }
    
    //优化1(如果序列已经完全有序,可以提前终止冒泡排序)
    void bubbleSort1(int array[],int size){
        
        std::cout << "array= " << array << std::endl;
        
        for (int end = size-1; end > 0; end--) {
            
            bool sorted = true;
            
            for (int begin = 1; begin <= end; begin++) {
                
                if (array[begin] < array[begin-1]) {
                    
                    int tmp = array[begin];
                    
                    array[begin] = array[begin-1];
                    
                    array[begin-1] = tmp;
                    
                    sorted = false;
                    
                }
            }
            
            if (sorted == true) {
                
                break;
                
            }
        }
        
        for(int i = 0; i < size; ++i)
        {
            printf("%d ", array[i]);
        }
    }
    
    //优化2(如果序列尾部已经局部有序,可以记录最后1次交换的位置,减少比较次数)
    void bubbleSort3(int array[],int size){
        
        std::cout << "array= " << array << std::endl;
        
        for (int end = size-1; end > 0; end--) {
            
            int sortedIndex = 1;
            
            for (int begin = 1; begin <= end; begin++) {
                
                if (array[begin] < array[begin-1]) {
                    
                    int tmp = array[begin];
                    
                    array[begin] = array[begin-1];
                    
                    array[begin-1] = tmp;
                    
                    sortedIndex = begin;
                    
                }
            }
            
            end = sortedIndex;
        }
        
        for(int i = 0; i < size; ++i)
        {
            printf("%d ", array[i]);
        }
    }
    
    //选择排序
    void selectionSort(int array[],int size){
        
        for (int end = size-1; end > 0; end--) {
            
            int maxIndex = 0;
            
            for (int begin = 1; begin <= end; begin++) {
                
                if (array[maxIndex] < array[begin]) {//假定的这个数小于循环扫描的数
                    
                    maxIndex = begin;
                    
                }
            }
            int tmp = array[maxIndex];
            
            array[maxIndex] = array[end];
            
            array[end] = tmp;
            
        }
        
        for(int i = 0; i < size; ++i)
        {
            printf("%d ", array[i]);
        }
    }
    

    相关学习地址:

    https://visualgo.net/zh 图形化算法

    此文仅为鄙人学习笔记之用,朋友你来了,如有不明白或者建议又或者想给我指点一二,请私信我。liuw_flexi@163.com/QQ群:582039935. 我的gitHub: (学习代码都在gitHub) https://github.com/nwgdegitHub/
  • 相关阅读:
    (二)Maven的使用--安装配置
    (一)Maven介绍
    (二)Monkey自动化脚本
    App测试--专项测试
    Java基础--(三)运算符
    Vue.js 介绍入门
    NodeJS 入门第三天(Express框架)
    NodeJS 入门第二天(EJS模板)
    《前端架构设计》读后感
    NodeJS 入门第一天
  • 原文地址:https://www.cnblogs.com/liuw-flexi/p/13491386.html
Copyright © 2011-2022 走看看