首页 > 编程语言 >排序算法

排序算法

时间:2022-10-09 19:55:31浏览次数:45  
标签:main 排序 int 元素 算法 printf include

选择排序

     #include <stdio.h>
     int main()
     {
        int i,j,t,a[9];    //定义变量及数组为基本整型
        printf("请输入8个数:\n");
        for(i=1;i<9;i++)
        scanf("%d",&a[i]);    //从键盘中输入要排序的10个数字
        for(i=1;i<=9;i++)
        for (j=i+1;j<=8;j++)
        if(a[i]>a[j])    //如果前一个数比后一个数大,则利用中间变量t实现两值互换
        {
            t=a[i];
            a[i]=a[j];
            a[j]=t;
        }
          printf("排序后的顺序是:\n");
          for(i=1;i<=8;i++)
          printf("%5d", a[i]);    //输出排序后的数组
          printf("\n");
          return 0;
      }

冒泡排序

  #include <stdio.h>
  int main(void)
  {
       int a[] = {12,23,8,15,33,24,77,55};
       int n;  //存放数组a中元素的个数
       int i;  //比较的轮数
       int j;  //每轮比较的次数
       int buf;  //交换数据时用于存放中间数据
       n = sizeof(a) / sizeof(a[0]);  /*a[0]是int型, 占4字节, 所以总的字节数除以4等于元素的个数*/
       for (i=0; i<n-1; ++i)  //比较n-1轮
    {
    for (j=0; j<n-1-i; ++j)  //每轮比较n-1-i次,
    {
        if (a[j] < a[j+1])
        {
            buf = a[j];
            a[j] = a[j+1];
            a[j+1] = buf;
        }
       }
   }
      for (i=0; i<n; ++i)
   {
       printf("%d\x20", a[i]);
   }
       printf("\n");
       return 0;
  }


插入排序

   #include <stdio.h>
    //自定义的输出函数
    void print(int a[], int n ,int i){
    printf("%d:",i);
    for(int j=0; j<8; j++){
    printf("%d",a[j]);
    }
     printf("\n");
      }
    //直接插入排序函数
     void InsertSort(int a[], int n)
    {
       for(int i= 1; i<n; i++){
        if(a[i] < a[i-1]){//若第 i 个元素大于 i-1 元素则直接插入;反之,需要找到适当的插入位置后在插入。
        int j= i-1;
        int x = a[i];
        while(j>-1 && x < a[j]){  //采用顺序查找方式找到插入的位置,在查找的同时,将数组中的元素进行后移操作,给插入元素腾出 
        空间
            a[j+1] = a[j];
            j--;
        }
        a[j+1] = x;      //插入到正确位置
    }
    print(a,n,i);//打印每次排序后的结果
     }
       }
   int main(){
   int a[8] = {12,23,8,15,33,24,77,55};
   InsertSort(a,8);
  return 0;
   }


快速排序

标签:main,排序,int,元素,算法,printf,include
From: https://www.cnblogs.com/zhao-yuexi/p/16773447.html

相关文章

  • 算法,比较rust golang nodejs 斐波那契算法
    运行环境:macOSm1javascriptfunctionfid(n){if(n==0)return0if(n==1)return1returnfid(n-1)+fid(n-2)}letstart_time=Date.now();fid(50)lete......
  • 【路径规划-TSP问题】基于蚁群算法求解旅行商问题含Matlab代码
    ✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。......
  • AcWing算法提高课 卡特兰数
    卡特兰数的基本模型是,(0,0)->(n,n)且不越过x=y这条线等价于另一个模型:01序列且全部前缀中0的个数都大于1,其中0对应于x方向移动,1对应y方向移动例题:https://www.acwing.co......
  • 统计学习方法学习笔记-09-EM算法及其推广
    首先叙述EM算法,然后讨论EM算法的收敛性,作为EM算法的应用,介绍高斯混合模型的学习,最后介绍EM算法的推广-GEM算法EM算法的引入目的:概率模型有时候既含有观测变量,也含有隐变......
  • 选择排序、冒泡排序、插入排序、快速排序
    排序选择排序以数组a[8]={12,23,8,15,33,24,77,55}为例WHILE(notsortedyet)findsmallestunsorteditemSwapfirstunsorteditemwiththesmallests......
  • Java加解密-SM4国密算法
    SM4国密算法简介SM4依赖包SM4类SM4_Context类SecuritySM4类=================================== SM4国密算法简介与DES和AES算法相似,国密SM4算法是一种分组加密......
  • 计算机算法设计与分析 实验题 及代码
    很舒服的题目,不难。科班的知识就是舒服。实验2:递归与分治实验目的熟悉递归算法的基本思想和基本步骤,熟练掌握递归公式的推导和定义方法,用递归算法解决实际问题。实验要......
  • python递归算法
    递归是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是“自己调自己”,一个使用递归技术的方法将会直接或间接的调用自己。利用递归可以用简单的程序来解决......
  • 图论-最短路算法
    一、floyd1.介绍 floyd算法只有五行代码,代码简单,三个for循环就可以解决问题,所以它的时间复杂度为O(n^3),可以求多源最短路问题。 2.思想: Floyd算法的基本思想如......
  • SQLCookbook 学习笔记 2结果排序
    selectnamefromemporderbysalary;ORDERBY默认是按照升序排列,当需要倒序时用ORDREBYsalaryDESCORDERBY 不一定要基于列名,也可以用数字表示基于第几列:......