• 这或许是东半球讲十大排序算法最好的一篇文章(c++版程序)


    参考:https://juejin.cn/post/6844903863288332302

    冒泡排序代码:

    include

    include

    using namespace std;

    //冒泡排序数组方式
    int bubblesort(int a[], int num)
    {
    int i=0,j=0;
    int tmp = 0;

    for (i=0; i<num-1;i++)
    {
        for(j=0; j <num-1-i;j++)
        {
            if(a[j] < a[j+1])
            {
                tmp = a[j];
                a[j] = a[j+1];
                a[j+1] = tmp;
            }
        }
    }
    return 0;
    

    }

    //vector方式
    void bubble(vector &nums)
    {
    int size = nums.size();
    for(int i=0; i< size-1;i++)
    for(int j=0; j < size-i-1;j++)
    {
    if(nums[j] <nums[j+1])
    {
    swap(nums[j], nums[j+1]);
    }
    }
    }
    //选择排序
    void selectSort(int a[], int num)
    {
    int min_flag = 0;//最小值下标
    int tmp = 0;
    for (int i = 0; i < num; i++)
    {
    min_flag = i;
    for (int j = i+1 ; j< num; j++)
    {
    if (a[j] < a[min_flag])
    {
    min_flag = j;
    }
    }
    tmp = a[i];
    a[i] = a[min_flag];
    a[min_flag] = tmp;
    }
    }

    //插入排序
    void insertSort(int a[], int num)
    {
    int i,j = 0;
    int value = 0;
    for (i=1; i< num; i++)
    {
    value = a[i];//要比较的元素
    for (j= i-1; j>=0; j--)//插入的位置
    {
    if(a[j] > value)
    {
    a[j+1] = a[j];
    }
    else
    {
    break;
    }
    }
    a[j+1] = value;//插入数据
    }
    }

    //希尔排序
    void hillSort(int a[], int num)
    {
    int gap , i , j = 0;
    gap = num/2;
    while(gap>0)
    {
    for (i = gap; i< num ; i++)
    {
    int val = a[i];
    j = i-gap;
    while(val < a[j] && j>=0)
    {
    a[j+gap] = a[j];
    j -= gap;
    }
    a[j + gap] = val;
    }

    	gap /= 2;
    }
    

    }

    int main() {

    int nums[6] = {2,3,4,7,9,0};
    for (int i= 0; i < 6; i++)
    {
        cout <<"before num:" << nums[i] <<endl;
    }
    //(void)bubblesort(nums, 6);
     (void)insertSort(nums,6);
    for (int i= 0; i < 6; i++)
    {
        cout <<"after num:" << nums[i]<<endl;
    }
    cout  << "test
    ";
    cout << "vector sort :" <<endl;
    
    vector<int> tmp{3,90,34,5};
    for(auto iter= tmp.begin(); iter != tmp.end();iter++)
    {
        cout << "before sort, i:" << *iter << endl;
    }
    
    bubble(tmp);
    vector<int>::iterator it;
    
    for(it= tmp.begin(); it != tmp.end();it++)
    {
        cout << "after sort, i:" << *it << endl;
    }
    
    
    return 0;
    

    }

  • 相关阅读:
    求全排列,调用C++函数
    ZOJ 3508 (the war)
    HDU 1285
    SDUT--枚举(删数问题)
    SDUT--进制转换
    位运算
    [NOI2015]软件包管理器
    列队[noip2017]
    [APIO2007]动物园
    [NOI2001]炮兵阵地
  • 原文地址:https://www.cnblogs.com/williamwucoder/p/14174511.html
Copyright © 2020-2023  润新知