排序

作者: wenyilab | 来源:发表于2019-08-20 07:19 被阅读0次

    //快速排序

    
    void quick_sort(int s[], int l, int r)
    {
        if (l < r)
        {
            //Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1
            int i = l, j = r, x = s[l];
            while (i < j)
            {
                while(i < j && s[j] >= x) // 从右向左找第一个小于x的数
                    j--;  
                if(i < j) 
                    s[i++] = s[j];
                
                while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数
                    i++;  
                if(i < j) 
                    s[j--] = s[i];
            }
            s[i] = x;
            quick_sort(s, l, i - 1); // 递归调用 
            quick_sort(s, i + 1, r);
        }
    }
    

    //冒泡排序

    void BubbleSort1(int a[], int n)
    {
           int i, j;
           for (i = 0; i < n; i++)
                  for (j = 1; j < n - i; j++)
                         if (a[j - 1] > a[j])
                                Swap(a[j - 1], a[j]);
    }
    

    直接插入

    void Insertsort(int a[], int n)
    {
        int i, j;
        for (i = 1; i < n; i++)
            if (a[i] < a[i - 1])
            {
                int temp = a[i];
                for (j = i - 1; j >= 0 && a[j] > temp; j--)
                    a[j + 1] = a[j];
                a[j + 1] = temp;
            }
    }
    

    相关文章

      网友评论

          本文标题:排序

          本文链接:https://www.haomeiwen.com/subject/fgtusctx.html