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] <<" | ";   
        }    
    } 
    书搞进脑袋 创新 创造; 积极
  • 相关阅读:
    golang中channels的本质详解,经典!
    Vim tips——Working with external commands
    go语言中log包的使用
    vue自定义轮播图组件 swiper
    Nerv --- React IE8 兼容方案
    微信小程序实战之 pay(支付页面)
    微信小程序实战之 goods(订餐页)
    微信小程序 自定义组件(stepper)
    微信小程序 自定义组件(modal) 引入组件
    微信小程序之 Swiper(轮播图)
  • 原文地址:https://www.cnblogs.com/tobetterlife/p/12170980.html
Copyright © 2011-2022 走看看