zoukankan      html  css  js  c++  java
  • C语言-排序和查找

    一 冒泡排序:算法特点:两层循环外层控制排序的趟数,内存控制相邻元素两两比较的次数。n个数共需n-1趟,(i=1;i<n;i++)趟数=n-1-1+1,其中第j趟需要相邻元素两两比较的次数为n-j。可以按照升序也可以安排降序排序。其实还可以优化。

    oid Bubblesort(int *p,int n)
    {
        int i,j,temp;
        for(i = 1;i < n;i++)
        {
            for(j = 0;i < (n - j);j++)
            {
                if(p[j]< p[j+1])
                {
                    p[j]= p[j] + p[j+1];
                    p[j+1]= p[j] - p[j+1];
                    p[j]= p[j] - p[j+1];
                }
            }
        }
    }

    二 快速排序:有左起点和右终点,还有一个标准点(任选),先从右端开始寻找比标准小的值,再从左端选大于标准的值,然后将其交换,逐个进行这样的操作,知道前后两个指针相等此时记下该位置点并与标准点进行值交换,最终以标准为界,左端是小于标准点的一个序列,右边是大于标准值得序列,但这两个序列都是无序的。

    然后分别对左边序列和右边序列进行函数递归调用重复上述过程。

    void quicksort(int *p,int low,int high)
    {
        int slect_std;
        int i,j;
        slect_std = p[low];
        i = low;
        j = high;
        while(i <= j)
        {
            while(p[slect_std] <= p[j] && (i<j))
                j--;
            while(p[slect_std] >= p[i] && (i<j))
                i--;
            if(i < j)
                p[i] = p[i] + p[j];
                p[j] = p[i] - p[j];
                p[i] = p[i] - p[j];

        }
        p[i] = p[lown];
        slect_std = p[i];
        quicksort(p,low,i-1);
        quicksort(p,i+1,high);
    }

  • 相关阅读:
    大的FIbonacci数列_Java求法
    HDU1134_Game of Connections 卡特兰数
    oracle中查询锁表
    SpringBoot之使用Druid连接池以及SQL监控和spring监控
    用vue封装插件并发布到npm
    vue 预览 Excel 表格
    vue + elementUI 表格 底部 合计总数
    springboot项目中实现访问druid内置监控页面
    解决Elementui eltable合计 showsummary不显示,样式混乱问题
    Druid连接池:慢查询监控
  • 原文地址:https://www.cnblogs.com/jieruishu/p/3894352.html
Copyright © 2011-2022 走看看