首页 > 其他分享 >排序

排序

时间:2023-06-11 22:22:45浏览次数:15  
标签:temp min int 复杂度 ++ 排序

1、基本概念

  1、稳定排序:a == b,a本来在b前面,排序结束a仍然在b前面

  2、非稳定排序:a==b,a原本在b前面,排序结束b在a前面

  3、原地排序:排序过程中不申请新的空间

  4、非原地排序:需要利用额外的数组来辅助排序

2、排序算法

  1、选择排序

void Selectsort(int a[],int n)
{
    int i;
    int j;
    int k;
    int min;
    int temp;
    for(i = 0;i < n;i++)
    {
        min = i;
        for(j = i + 1;j < n;j++)
        {
            if(a[min] > a[j])
            {
                min = j;
            }
        }
        if(i != min)
        {
            temp = a[i];
            a[i] = a[min];
            a[min] = temp;
        }
    }
}
//时间复杂度:O(n的平方)
//空间复杂度:O(1)
//非稳定排序
//原地排序

  2、插入排序

void Insertsort(int a[],int n)
{
    int i;
    int j;
    int temp;
    int k;
    if(a == NULL || n < 2)
    {
        return ;
    }
    for(i = 0;i < n;i++)
    {
        temp = a[i];
        k = i-1;//挨个往前找
        //找到插入位置
        while(k >= 0 && a[k] > temp)
        {
            k--;
        }
        //腾出位置插进去,要插的位置是k+1;
        for(j = i;j > k+1; j--)
        {
            a[j] = a[j-1];
        }
        a[k+1] = temp;
    }
}
//时间复杂度O(n的平方)
//空间复杂度:O(1)
//稳定排序
//原地排序

  3、冒泡排序

void Bubblesort(int a[],int n)
{
    int i;
    int j;
    int temp;
    for(i = 0;i < n;i++)
    {
        for(j = 0;j < n-i-1;j++)
        {
            if(a[j+1] < a[j])
            {
                temp = a[j+1];
                a[j+1] = a[j];
                a[j] = temp;
            }
        }
    }
}
//时间复杂度O(n的平方)
//空间复杂度O(1)
//稳定排序
//原地排序

//优化,如果一次循环下来一次交换操作都没有,说明此时数组有序
void highBubblesort(int a[],int n)
{
    int i;
    int j;
    int temp;
    int flag = 1;
    for(i = 0;i < n;i++)
    {
        for(j = 0;j < n-i-1;j++)
        {
            if(a[j+1] < a[j])
            {
                flag = 0;
                temp = a[j+1];
                a[j+1] = a[j];
                a[j] = temp;
            }
        }
        if(flag)
        {
            break;
        }
    }
}

  

标签:temp,min,int,复杂度,++,排序
From: https://www.cnblogs.com/gunancheng/p/17473528.html

相关文章

  • 排序
    #include<stdio.h>#include<stdlib.h>#defineMAX1000voidprintList(intlist[],intn){ inti; for(i=0;i<n;i++){ printf("%d",list[i]); } printf("\n");}voidheapAdjust(intlist[],intu,intv){......
  • 根据已有链表中的元素进行排序
    思想为先将链表中的每一个节点映射到一个链表节点为变量的数组里,在根据节点的元素进行排序,本程序为ave,过程中将数组变量排序,最后重新生成链voidpaixu(LinkListhead)//从大到小{intlength=len(head),i=0,j=0,sum1[length],n1;LinkListsum[length];LinkListpa=hea......
  • 快速排序,霸气。
    只是这个地方写反了。写成大于等于也可以,写成等于就报错。importjava.util.Arrays;publicclassquickSort22{publicstaticvoidmain(String[]args){inta[]={7,6,4,2,99,-32,-3232,23232,32,9,1,22,3,1};quickSort(a,0,a.length-1);System.out.println(Arrays.toS......
  • SpringBoot进阶教程(七十六)多维度排序查询
    在项目中经常能遇到,需要对某些数据集合进行多维度排序的需求。对于集合多条件排序解决方案也有很多,今天我们就介绍一种,思路大致是设置一个分值的集合,这个分值是按照需求来设定大小的,再根据分值的大小对集合排序。v需求背景我们来模拟一个需求,现在需要查询一个用户列表,该列表......
  • Python+pandas你可能不知道的排序技巧
    除了支持使用sort_index()方法按索引或列名进行排序,pandas的DataFrame结构还支持sort_values()方法根据值进行排序,本文重点介绍sort_values()方法,其完整语法如下:sort_values(by,axis=0,ascending=True,inplace=False,kind='quicksort',na_position='last')其中常用的参数有:1)参......
  • Python实现汉字人名按拼音或笔画顺序排序
    任务描述:编写Python程序,对给定的多个人名按笔画多少或拼音排序。主要思路:把每个汉字对应的笔画数量按Unicode编码顺序存入文本文件以便重复利用,内容如下图,所有数字存为一行,相邻数字使用英文半角逗号分隔。可以后台发送消息“汉字笔画”下载这个文件。对于给定的汉字获取Unicode编码......
  • 关于dev report 数据源的排序 report修改的问题
    因为报表的建立很多是复制的别的类型差不多的报表得来,结果造成一些莫名其妙的问题比如数据源的排序被控件改了,因为有分组小计分组的字段等设置会影响排序.正常的设计是这样的  groupheader2为何也要group因为这个表头需要在分页的时候也要显示,也只有用group的band才有......
  • 插入排序之直接插入排序
    一、直接插入排序插入排序(英语:Insertionsort)是一种简单直观的排序算法。它的工作原理为将待排列元素划分为「已排序」和「未排序」两部分,每次从「未排序的」元素中选择一个插入到「已排序的」元素中的正确位置。一个与插入排序相同的操作是打扑克牌时,从牌桌上抓一张牌,按牌面大......
  • 奇数前,偶数后排序
    voidmove(int*arr,intsz){ intleft=0; intright=sz-1; while(left<right)//left必须小于right防止指针越界 { //从左边找偶数 while(left<right&&arr[left]%2==1) { left++; } //从右边找奇数 while(left<right&&arr[right]%2==0......
  • Python版归并排序算法(附Python程序__name__属性用法演示视频)
    importrandomdefmergeSort(seq,reverse=False):#把原列表分成两部分mid=len(seq)//2left,right=seq[:mid],seq[mid:]#根据需要进行递归iflen(left)>1:left=mergeSort(left)iflen(right)>1:right=mergeS......