首页 > 其他分享 >冒泡排序、插入排序、选择排序

冒泡排序、插入排序、选择排序

时间:2024-05-08 20:25:06浏览次数:11  
标签:temp int 插入排序 元素 flag 冒泡排序 ++ si 排序

冒泡排序

思想:从左到右,元素交换。
第一个元素和第二个元素比较,若第一个元素大于第二个,则交换元素,再第二个元素与第三个元素比较,依次比较,直到比较完。则最尾部的元素是最大值。

void maopao(int a[5],int si)
{
    for (int i = 0; i < si-1; i++)
    {
        for (int j = 0; j < si-1-i; j++)
        {
            if (a[j]>a[j+1])
            {
                int temp=a[j];
                a[j]=a[j+1];
                a[j+1]=temp;
            }
        }
    }
}

插入排序

思想:把数组分为有序和无序,后面的元素与有序的元素比较,假设第一个数据是有序,把第二个数据和排好的数据进行比较,如果第二个元素大于第一个元素,则不差,否则,第一给元素后移,将第二个元素插入到第一个元素的位置,依次进行。

void Insta(int a[5],int si)
{
    int temp=0,flag=0;
    for (int i = 1; i < si; i++)
    {
        temp=a[i];
        for (int j = i-1; j>=0; j--)
        {
            if (temp<a[j])
            {
                a[j+1]=a[j];
                flag=j;
            }else 
            {
                flag=j+1;
                break;
            }
        }
        a[flag]=temp;
    }
    
}

选择排序

思想:从待排序数组中选择最小的放在第一个位置,除第一个位置中的排序数组中选择第二小的数,放在第二个位置,依次选择

void sect(int a[5],int si)
{
    int flag,temp;
    for (int i = 0; i < si; i++)
    {
        flag=i;
        for (int j = i+1; j < si; j++)
        {
            if (a[flag]>a[j])
            {
                flag=j;
            }
        }
        temp=a[i];
        a[i]=a[flag];
        a[flag]=temp;
    }
}

标签:temp,int,插入排序,元素,flag,冒泡排序,++,si,排序
From: https://www.cnblogs.com/lzj-ZJ/p/18180783

相关文章

  • 34. 在排序数组中查找元素的第一个和最后一个位置
    给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1,-1]。你必须设计并实现时间复杂度为O(logn)的算法解决此问题。示例1:输入:nums=[5,7,7,8,8,10],target=8......
  • Mysql中的双路排序和单路排序
    在Mysql中使用orderby进行排序的时候,是可以使用到索引排序的,但是需要添加一些限制条件,例如:select*fromt_userwherename='张三'orderbyname;使用这种方式就可以使用到索引,同时使用limit也是可以使用到索引的select*fromt_userorderbyname;通过这种方式不会使用到索......
  • 归并排序
    归并排序模板constintN=1e6+10;inta[N],tmp[N];//定义一个缓存数值voidmerge_sort(intq[],intl,intr){if(l>=r)return;intmid=l+r>>1;merge_sort(q,l,mid),merge_sort(q,mid+1,r);intk=0,i=l,j=mid+1;......
  • 快速排序
    快速排序快排模板(以j为分界)快排属于分治算法,分治算法都有三步:1.分成子问题2.递归处理子问题3.子问题合并voidquick_sort(intq[],intl,intr){//递归的终止情况if(l>=r)return;//第一步:分成子问题 inti=l-1,j=r+1,x=q[1+r>>......
  • dataframe的构造,取值,赋值,移动,交集,并集,排序,打印,转List,导出csv
    一、构造  da=pd.read_csv(filepath_or_buffer='data.csv',sep='\t')  print(da)  datas=pd.DataFrame(da)2、直接赋值df=pd.DataFrame([[1.4,np.nan],[7,-4],[np.nan,np.nan],[0.75,-1.3]],index=[1,2,3,4],         columns=[......
  • 选择排序
    //选择排序从序列中找到一个最小值元素,把最小值元素放在整个序列的首部,重复n轮,直到整个序列有序voidSelectSort(intbuf[10],intsize){ intmin=0;//记录最小值元素的下标 inttemp=0;//备份最小值元素的值 //需要比较n轮,每轮找到序列中的最小值元素 for(intn......
  • 二分法、冒泡排序
    【一】二分法二分法查找,也称为折半法,是一种在有序数组中查找特定元素的搜索算法思路:首先,从数组的中间元素开始搜索,如果该元素正好是目标元素,则搜索过程结束,否则执行下一步。如果目标元素大于/小于中间元素,则在数组大于/小于中间元素的那一半区域查找,然后重复步骤的操作。如......
  • 常见的排序算法——归并排序(二)
    本文记述了自底向上归并排序的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。◆思想使用自底向上的递推思想进行排序。从大小为1的子范围开始两两归并,得到小规模排序的结果。逐步将子范围的大小翻倍并继续两两归并,直到整个数组范围都已被归并,即得......
  • 01选择排序
     1.选择排序含义每次选择最小的,放到左侧。持续进行。 2.示例代码:defselectionSort(arr):foriinrange(len(arr)-1):#记录最小数的索引minIndex=iforjinrange(i+1,len(arr)):ifarr[j]<arr[minIndex]:......
  • 插入排序
    插入排序简单来说假设数组第一个元素为一个有序序列然后将后面的无序序列依次与第一个元素比较更具大小决定待插入元素插入的位置。、、、//插入排序是吧无序序列中的元素依次插入到有序序列中,一般是从有序序列的尾部开始比较voidInsertSort(intbuf[10],intbufsize){......