• 常见的排序算法


    选择排序 

      -- 把待排序的n个元素看作 有序部分和无序部分 ,依次选出第 i 小的元素

    #include <iostream>
    #include<cstdio>
    
    using namespace std;
    
    int main(){
        int a[5] = {4,5,1,3,2} ;
        int i,j ;
        for(i=0; i<5; ++i){
            for(j=i+1;j<5;++j){
                if(a[i]>a[j]){    // 如果找到更小的,交换之
                    int t = a[i] ;  
                    a[i] = a[j] ;
                    a[j] = t ;
                }
            }
        }
    
        for(i=0; i < 5; ++i)
            printf("%d",a[i]);
        return 0 ;
    }

    冒泡排序

      -- 通过相邻元素之间的比较和交换使较小元素逐渐从后向前移动,就像水底的气泡一样逐渐向上冒。

    #include<iostream>
    #include<cstdio>
    using namespace std ;
    
    int main(){
        int a[6] = {1,4,2,3,6,5} ;
        int temp , n = 6 ;
        for(int i=0;i<n-1;i++){ // n个数, n-1轮冒泡 , 每一轮都将当前最小的数推到最前
            for(int j= n-1 ; j>i ; j--){
                if(a[j]<a[j-i]){ //交换两个数
                    temp = a[j];
                    a[j] = a[j-1];
                    a[j-i] = temp ;
                }
            }
    
        }
        //  打印排序结果
        for(int i = 0 ; i<n ; i++){
            printf("%d ",a[i]);
        }
        return 0 ;
    }

    插入排序 --
      把待排序的n个元素看作一个 有序部分和一个 无序排序部分 。 开始时有序部分只有1个元素,无序部分有n-1 个元素。排序过程中每次取出无序部分的第一个元素,将它插入到有序部分的合适位置,使有序部分元素个数增1,经过 n-1 次这样的处理后,有序部分有n个元素,排序结束。

    #include<iostream>
    #include<cstdio>
    using namespace std ;
    
    int main(){
        int a[] = {2,10,4,5,1,9} ; // 待排序元素用一个数组a表示,数组有n个元素
        int temp , n = 6 , j ;
        for(int i = 1 ; i<n ;i++){ // i 表示插入次数,并进行 n-1 次插入
            // 把待排序元素赋给 temp , temp 在 while 循环中并不改变 , 这样方便比较 ,并且它是要插入的元素
            temp = a[i] ;
            j = i -1 ;
            // while 循环的作用是将比当前元素大的元素往后移动一个位置
            while((j>=0)&&(temp<a[j])){
                a[j+1] = a[j];
                j--;  // 顺序比较和移动,依次将元素后移动一个位置
            }
            a[j+1] = temp ; // 元素后移后要插入的位置就空出了,找到该位置插入
        }
    
        for(int i = 0 ;i<=5;i++){
            printf("%d ", a[i]);
        }
    
        return 0 ;
    
    }



  • 相关阅读:
    MYSQL查看数据表最后更新时间
    linux在终端模拟软件实现文件上传下载
    yum常用操作
    释放Linux占用端口
    CentOS7.3编译安装MariaDB10.2.6
    CentOS7编译安装Nginx1.10.1
    Linux系统安装ActiveMQ时遇到服务无法启动的问题
    需求分析读书笔记(一)
    实用地址分享
    元素居中汇总
  • 原文地址:https://www.cnblogs.com/Skypeduty1225/p/15003669.html
Copyright © 2020-2023  润新知