zoukankan      html  css  js  c++  java
  • c++ 排序 冒泡 插入 选择 快速

    //冒泡
    #include <iostream>
    using namespace std;
    
    
    void bubbleSort(int* list,int index)
    {
        for(int i=index;i>0;i--) //index 最大的那个索引
        {
            for(int j=0;j<i;j++)
            {
                if(list[j]>list[j+1])
                {
                    int temp;
                    temp=list[j];
                    list[j]=list[j+1];
                    list[j+1]=temp;
                }
            }
        }
    }
    
    
    void main()
    {
        int list[9]={3,4,1,5,2,8,7,9,6};
    
        for(int i=0;i<9;i++)
            cout<<list[i]<<" | ";
        cout<<endl;
    
        bubbleSort(list,8);//index:= 9-1
    
        for(int i=0;i<9;i++)
            cout<<list[i]<<" | ";
    }
    
    
    //插入排序法
    #include <iostream>
    using namespace std;
    
    
    void insertSort(int* list,int index)
    {
        //在排序之前我们需要搞清一个思路,新插入一个数据的时候,排序过后的数组都是
        //从小到大排列好的,所以我们需要从后往前查找,直到找到比我们要插入的数字还小的
        //值。这个时候我们需要一个变量j作为标识
    
    
        //从1开始
        for(int i=1;i<=index;i++) //index 最大的那个索引
        {
            int insertNode=list[i];
            int j;
            for(j=i-1;j>=0;j--)
            {
                if(insertNode<list[j])
                    list[j+1]=list[j];
                else
                    break; //因为前面的已经排序好,所以找到位置后 就可以退出了
            }
            list[j+1]=insertNode;
        }
    
    }
    
    
    void main()
    {
        int list[9]={3,4,1,5,2,8,7,9,6};
    
        for(int i=0;i<9;i++)
            cout<<list[i]<<" | ";
        cout<<endl;
    
        insertSort(list,8);//index:= 9-1
    
        for(int i=0;i<9;i++)
            cout<<list[i]<<" | ";
    }
    
    
    
    
    //选择排序法
    #include <iostream>
    using namespace std;
    
    
    void selectSort(int* list,int index)
    {
        for(int i=0;i<=index;i++) //index 最大的那个索引
        {
            int minValue=list[i];
            int minIndex=i;
    
            for(int j=i;j<=index;j++)
            {
                if(minValue>list[j])
                {
                    minValue=list[j];
                    minIndex=j;
                }
            }
    
            int temp;
            temp=list[i];
            list[i]=list[minIndex];
            list[minIndex]=temp;        
        }
    
    }
    
    
    void main()
    {
        int list[9]={3,4,1,5,2,8,7,9,6};
    
        for(int i=0;i<9;i++)
            cout<<list[i]<<" | ";
        cout<<endl;
    
        selectSort(list,8);//index:= 9-1
    
        for(int i=0;i<9;i++)
            cout<<list[i]<<" | ";
    }
    
    
    
    
    
    //快速排序法
    #include <iostream>
    using namespace std;
    
    int Partition(int a[], int low, int high)
    {
        int x = a[high];//将输入数组的最后一个数作为主元,用它来对数组进行划分
        int i = low - 1;//i是最后一个小于主元的数的下标
        for (int j = low; j < high; j++)//遍历下标由low到high-1的数
        {
            if (a[j] < x)//如果数小于主元的话就将i向前挪动一个位置,并且交换j和i所分别指向的数
            {
                int temp;
                i++;
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
        //经历上面的循环之后下标为从low到i(包括i)的数就均为小于x的数了,现在将主元和i+1位置上面的数进行交换
        a[high] = a[i + 1];
        a[i + 1] = x;
        return i + 1;
    }
    
    void QuickSort(int a[], int low, int high)
    {
        if (low < high)
        {
            int q = Partition(a, low, high);
            QuickSort(a, low, q - 1);
            QuickSort(a, q + 1, high);
        }
    }
     
     
    void main(){    int arry[] = {3,4,1,5,2,8,7,9,6};
        
        for (int i = 0; i < 9; i++) 
        {        
            cout << arry[i] <<" | ";   
        }
    
        cout<<endl;
        QuickSort(arry, 0, 8);
        for (int i = 0; i < 9; i++)  
        {        
            cout << arry[i] <<" | ";   
        }    
    } 
    书搞进脑袋 创新 创造; 积极
  • 相关阅读:
    Windows Azure Web Site (19) Azure Web App链接到VSTS
    Windows Azure Virtual Machine (35) Azure VM通过Linked DB,执行SQL Job
    Azure PowerShell (16) 并行开关机Azure ARM VM
    Windows Azure Virtual Network (12) 虚拟网络之间点对点连接VNet Peering
    Azure ARM (21) Azure订阅的两种管理模式
    Windows Azure Platform Introduction (14) 申请海外的Windows Azure账户
    Azure ARM (20) 将非托管磁盘虚拟机(Unmanage Disk),迁移成托管磁盘虚拟机(Manage Disk)
    Azure ARM (19) 将传统的ASM VM迁移到ARM VM (2)
    Azure ARM (18) 将传统的ASM VM迁移到ARM VM (1)
    Azure Automation (6) 执行Azure SQL Job
  • 原文地址:https://www.cnblogs.com/tobetterlife/p/12170980.html
Copyright © 2011-2022 走看看