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;
        }
        
    }

     

      

      

  • 相关阅读:
    Fragment 总结
    Varnish缓存服务器的搭建配置手册
    关于页面缓存服务器的研究报告
    基于Html5的移动端开发框架的研究
    C#的Process类的一些用法
    c#中进程的使用
    C#反射(转载)
    进制的转换 以及十进制转换成x进制的代码
    算法及其复杂度
    cocos总结
  • 原文地址:https://www.cnblogs.com/healy/p/8036991.html
Copyright © 2011-2022 走看看