zoukankan      html  css  js  c++  java
  • 冒泡排序、选择排序

    冒泡排序

      思路:

      一组数中,相邻的两个数进行比较、交换,将最大(小)数交换至尾(首)部,即完成了一次冒泡排序。

      要想对N个数字进行排序,循环N次即可.

    实现代码:

     void sort(int * a,int len)//接收主函数的数组地址,和长度
     {
         int temp;
         for(int i=0;i <= len - i;i++)    //需要比的趟数,假如有4个数,就需要比较3趟
             {
                 for(int j = 0;j <= len-i-1;j++)  //每趟需要比较的次数
                 {
                     if(a[j] > a[j+1])
                     {
                         temp = a[j];
                         a[j] = a[j+1];
                         a[j+1] = temp;
                     }
                 }
             }
     }

    选择排序

    /*2017年12月10日11:08:52 
    选择排序 
    *思路:先将10个数中最小的数和a[0]对换;再将a[1]~a[9]中
    *最小的数与a[1]对换......每一比较一轮,找出一个未经排序的数中最小的一个。共比较9轮
    *  a[0]   a[1]  a[2]  a[3]  a[4] 
    *  3       6     1     9     4      未排序的情况下
    *  1       6     3     9     4        将5个数中最小的数1与a[1]对换 
    *  1       3     6     9     4        将余的4个数中最小的数3与a[1]对换 
    *  1       3     4     9     6        将余下的3个数中最小的数4与a[2]对换 
    *  1       3     4     6     9        将余下的2个数中最小的数6与a[3]对换 
    *                                    排序完成! 
    */                            
    #include <stdio.h>
    void sort(int a[],int n);
    int main(void)
    {
        int i,a[10];
        printf("请输入10个数:");
        for(i=0;i<10;i++)
            scanf("%d",&a[i]);
        
        printf("排序前:");
        for(i = 0;i<10;i++)
            printf("%4d",a[i]);
            
        printf("
    ");
         
        sort(a,10);
        printf("排序后:");
        for(i = 0;i< 10;i++)
            printf("%4d",a[i]);
            
        return 0;           
    }
    
    void sort(int array[],int n)
    {
        int i,k,j,t;
        for(i=0;i<n-1;i++)//需要比较的次数 
        {
            k = i;
            for(j = i+1;j<n;j++)
            {
                if(array[j] < array[k])//如果后一位数字比前一位小就交换数字 
                k = j;
            }
            
            t = array[k];
            array[k] = array[i];
            array[i] = t;
        }
        
    }

     

      

      

  • 相关阅读:
    NetCore使用Log4Net记录日志
    WCF数据协议中XmlArrayItem标签不起作用的问题
    WTM Blazor,Blazor开发利器
    WTM5.0发布,全面支持.net5
    log4netdemo
    mes 入库单号 锁表方案
    线程基础篇-线程同步
    线程基础篇-线程和进程
    EF基础篇-Code First
    EF基础篇-DB First
  • 原文地址:https://www.cnblogs.com/healy/p/8036991.html
Copyright © 2011-2022 走看看