2022.02.06 周日 晴

发布时间:2022-06-21 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了2022.02.06 周日 晴脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

一、排序(一

1. 冒泡排序 Bubble Sort O(N^2) 稳定排序算法

void bubble_sort1(int a[], int n)//n是数组长度
{
    int i, j;    int flag;
    for(i=n-1;i>0;i--)
    {        flag=0;//初始化标记为0
        for(j=0;j<i;j--)
        {
              if(a[j]>a[j+1])
                  swag(a[j], a[j+1]);                  flag=1;
        }        if(flag==0)            break;
    }
}

2. 快排 Quick Sort O(N*lgN) 最坏情况O(N^2) 非稳定排序算法

void quick_sort(int a[], int l, int r)
{
    if (l<r)
    {
        int i,j,x;//x为基准值

        i=l;
        j=r;
        x=a[i];
        while(i<j) {
            while (i < j && a[j] > x)
                j--;//从右向左找第一个小于x的数
            if (i < j)
                a[i++] = a[j];
            while (i < j &amp;& a[i] < x)
                i++;
            if (i < j)
                a[j--] = a[i];
        }
        a[i]=x;
        quick_sort(a,l,i-1);//对小于基准部分进行快速排序递归调用
        quick_sort(a,i+1,r);//对大于基准部分进行快速排序递归调用
    }
}

3. 直接插入排序 Straight Insertion Sort  O(N^2)  稳定排序算法

void insert_sort(int a[], int n)
{
    int i,j,k;

    for(i=1;i<n;i++){
        for(j=i-1;j>=0;j--)
            if(a[j]<a[i])
                break;
        if(j!=i-1)
        {
            //将比a[i]大的数据向后移
            int temp=a[i];
            for(k=i-1;k>j;k--)
                a[k+1]=a[k];
            //将a[i]放到正确位置
            a[k+1]=temp;
        }
    }
}

4. 希尔排序(缩小增量排序) Shell Sort 不稳定

void shell_sort1(int a[], int n)
{
    int i, j, gap;
    //gap为步长,每次减少为原来的一
    for(gap=n/2;gap>0;gap/=2)
    {
        //共gap个分组,对每一组执行直接插入排序
        for(i=0;i<gap;i++)
        {
            for(j=i+gap;j<n;j+=gap)
            {
                //如果a[j]<a[j-gap],则寻找a[j]位置,并将后面数据的位置都后移
                if(a[j]<a[j-gap])
                {
                    int tmp=a[j];
                    int k=j-gap;
                    while(k>=0&&a[k]>tmp)
                    {
                        a[k+gap]=a[k];
                        k-=gap;
                    }
                    a[k+gap]=tmp;
                }
            }
        }
    }
}

5. 选择排序 Select Sort O(N^2)  稳定排序算法

void select_sort(int a[], int n)
{
    int i;//有序区的末尾位置
    int j;//无序区的起始位置
    int min;//无序区中最小元素位置
    
    for(i=0;i<n;i++){
        min=i;
        //找出a[i+1]到a[n]之间的最小元素,并赋值给min;
        for(j=i+1;j<n;j++)
        {
            if(a[j]<a[min])
                min=j;
        }
        
        //若min!=i, 则交换a[i]和a[min]
        //交换之后,保证了a[0]...a[i]之间的元素是有序的
        if(min!=i)
            swap(a[i], a[min]);
    }
}

 

脚本宝典总结

以上是脚本宝典为你收集整理的2022.02.06 周日 晴全部内容,希望文章能够帮你解决2022.02.06 周日 晴所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。