zoukankan      html  css  js  c++  java
  • c语言实现数组的排序

     

    本文章只对选择排序和冒泡排序进行介绍

    选择排序实际上是从0到length-1,选择某个元素与其他的元素进行大小比较,如果大于就交换,其他情况不做操作,如图:

    冒泡排序实际上是先选择某个元素,然后从最后一个元素依次往前比较(不超过选择的元素),如果大于就交换,否则不变,如图

    `从图可以看出排序出的数仿佛是从地下往上冒出一样,因此称之为冒泡排序法。选择排序和冒泡排序算数复杂度都是n*n/2,效率不是太高

    头文件:

    #include<stdlib.h>
    #include<stdio.h>
    #include<string.h>

    函数原型:

    void sortA1(int a[], int length);    //选择排序
    
    void sortA2(int a[], int length); //冒泡排序
    
    void printA1(int a[], int length);   //遍历数组

    实现函数:

    void sortA1(int a[], int length){
    
        int i, j, temp;
    
        for(i = 0; i < length; ++i){
    
            for(j = i + 1; j < length; ++j){
    
                if(a[j] < a[i]){    //如果后一个元素小于前一个元素则交换
    
                    temp = a[i];
    
                    a[i] = a[j];
    
                    a[j] = temp;
    
                }
    
            }
        }
    
    }
    
    void printA1(int a[], int length){
    
        int i;
    
        for(i = 0; i < length; ++i){
    
            printf("%d,", a[i]);
        }
    
        printf("
    ");
    
    }
    
    void sortA2(int a[], int length){
    
        int i, j, temp;
    
        for(i = 0; i < length; ++i){
    
            for(j = length - 1; j > i; --j){
    
                if(a[j] > a[j - 1]){
                    
                    temp = a[j];
    
                    a[j] = a[j - 1];
    
                    a[j - 1] = temp;
    
                }
            }
    
        }
    
    }

    测试:

     1 void main(){
     2 
     3     int length = 0;
     4 
     5     int a[] = {12, 43, 8, 50, 100, 52,0};
     6 
     7     length = sizeof(a) / sizeof(a[0]);
     8 
     9     printf("排序前
    ");
    10 
    11     printA1(a, length);
    12 
    13     sortA1(a, length);
    14 
    15     printf("选择排序后
    ");
    16 
    17     printA1(a, length);
    18 
    19     sortA2(a, length);
    20 
    21     printf("冒泡排序后
    ");
    22 
    23     printA1(a, length);
    24 
    25     system("pause");
    26 }

    运行结果:

  • 相关阅读:
    关于数组的排序和拷贝!
    append和appendTo的区别!
    Layui的一点小理解(上)
    winfrom数据导出
    检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配
    文件监听
    C# winform 启动外部程序
    bat命令复制文件
    3.将模型添加到 ASP.NET Core MVC 应用
    2.将视图添加到 ASP.NET Core MVC 应用
  • 原文地址:https://www.cnblogs.com/zhouquan-1992-04-06/p/6207664.html
Copyright © 2011-2022 走看看