• 几种排序方法总结


    先立一个flag在这边,等会儿慢慢补全。。。。。

    冒泡排序:

     1 void bubble_sort(int a[],int n) //每一次循环都产生一个最大数在末尾,所以下面一次循环就不需要比较了
     2 
     3 {
     4 
     5     int i,j,temp;
     6 
     7     for(j=0;j<n-1;j++)
     8 
     9         for(i=0;i<n-1-j;i++)
    10 
    11         {   if(a[i]>a[i+1])
    12 
    13                  {
    14 
    15                     temp=a[i];
    16 
    17                     a[i]=a[i+1];
    18 
    19                     a[i+1]=temp;
    20 
    21                   }
    22            }         
    23 
    24   }           

    选择排序:

     //每次从待排序的数据元素中选出最小(或最大)存放在序列的起始位置
    1
    void select_sort(int a[],int n)//循环的次数和冒泡排序类似 2 { 3 int i,j,min,t; 4 for(i=0;i<n-1;i++) 5 { 6 min=i;//查找最小值 7 for(j=i+1;j<n;j++) 8 if(a[min]>a[j]) 9 min=j;//交换 10 if(min!=i)//这句可加可不加 11 { 12 t=a[min]; 13 a[min]=a[i]; 14 a[i]=t; 15 } 16 } 17 }

    插入排序:

    //这里讨论的主要是直接插入排序(其他的还有折半插入排序)
    //插入排序说白了就是一串数字,从第二个数字开始,每次向后看一个数字,然后把这个数字和前面的若干个数字比较,看比前面的大或者小就插上去

               

     1 void insertion_sort(int a[],int n)
     2 {
     3     int i,j;
     4     int temp;
     5     for(i=1;i<n;i++)
     6     {
     7         temp=a[i];
     8         j=i-1;
     9     //和已经排序好的数逐一比较,大于temp时,该数移后
    10         while((j>=0)&&(a[j]>temp))
    11         {
    12             a[j+1]=a[j];
    13             j--;
    14         }
    15         //存在大于temp 的数
    16         if(j!=i-1)//当挪到最前面的时候j=-1
    17             a[j+1]=temp;
    18     }
    19 }
  • 相关阅读:
    获取文件夹下的所有子文件,读取TXT文档
    360笔试
    刷题总结
    背包问题
    二叉树的创建、层次遍历、前序遍历、中序遍历、后序遍历
    今日头条面试
    面试题目
    Java高并发秒杀优化
    配置tomcat解压版
    环境变量设置:
  • 原文地址:https://www.cnblogs.com/guohaoyu110/p/6321909.html
Copyright © 2020-2023  润新知