zoukankan      html  css  js  c++  java
  • 经典算法系列四----冒泡与选择排序

    今天就写个排序里比较简单的两种算法:冒泡,选择

    思想:

    冒泡就是每次循环都两两比较,小的话就交换数据,这样一趟下来,最小的就选了出来,或者说是冒了出来。多次循环后,数组便是有序数组。

    选择是从数组中选出一个小的,然后记录下索引,到一次for循环后对比,判断是否需要交换数据,多次循环后,数组就是有序数组。

    这两个算法比较简单,但是也很经典,所以在这就记录下一篇。对于他们的时间复杂度,在很多排序中算是较差的,但是基础思想还是有学习的地方的,而且这两个都是不稳定排序。下面直接上代码,只做简单参照:

     1 /*
     2 *冒泡。选择排序
     3 *丁洋 
     4 */
     5 #include<stdio.h>
     6 #include<stdlib.h>
     7 /*
     8 *交换 
     9 */
    10 void swap(int *i,int *j) 
    11 {
    12      *i = *i ^ *j;
    13      *j = *i ^ *j;
    14      *i = *i ^ *j; 
    15 }
    16 /*
    17 *冒泡法 
    18 */
    19 void maop(int a[],int n)
    20 {
    21      int i,j;
    22      char flag = 1;/*设置提前跳出的标志*/
    23      for(i=0;i<n-1;i++)
    24      {
    25          flag = 1;
    26          for(j=0;j<n-1-i;j++)
    27          {
    28              if(a[j] > a[j+1])
    29              {
    30                   swap(&a[j],&a[j+1]);
    31                   flag = 0;        
    32              }                    
    33          }
    34          if(flag)
    35          break;                
    36      }     
    37 }
    38 
    39 /*
    40 *选择法 
    41 */
    42 void select(int a[],int n)
    43 {
    44     int i,j,k;
    45     for(i=0;i<n;i++)
    46     {
    47        k = i;
    48        for(j=i+1;j<n;j++)
    49        {
    50            if(a[k] > a[j])
    51            k = j;                  
    52        }
    53        if(k != i)
    54             swap(&a[k],&a[i]);                  
    55     }     
    56 }

    这个就简单看看就好,没什么难度!

  • 相关阅读:
    confluence的安装、破解和汉化
    Linux学习经验集锦
    MFS 分布式文件系统
    MFS
    Docker 搭建 WordPress
    ansible入门
    docker搭建pxc集群与haproxy负载均衡
    mysql-proxy 实现读写分离
    Linux内核学习总结
    lab8:理解进程调度时机跟踪分析进程调度与进程切换的过程
  • 原文地址:https://www.cnblogs.com/my-life/p/3491247.html
Copyright © 2011-2022 走看看