iOS开发-常用排序算法

前言

  • 常见的几种排序,针对不同数据,数据量,找到最合适的算法,是衡量一个程序员的基本标准,因此掏出小本子,又复习(其实因为不常用,已经忘完了~~)
    代码示例如下

公共部分
 int i,j,t,a[10],min;
        printf("请输入10个整数:\n");
        for (i = 0; i < 10; i++) {
            scanf("%d",&a[i]);
        }
        printf("\n");
  1. 冒泡排序法
    俗称 打擂台,从第一个元素开始,依次与后面的元素比较 平均时间复杂度:O(n^2) 平均空间复杂度:O(1) .
    for (i = 0; i < 10; i++) {
        for (j = 0; j < 9-i; j++) {
            if (a[j] > a[j+1]) {
                t = a[j];
                a[j] = a[j+1];
                a[j+1] = t;
            }
        }
    }
  1. 插入排序法
         1. 从第一个元素开始,认为该元素已经是排好序的。
         2. 取下一个元素,在已经排好序的元素序列中从后向前扫描。
         3. 如果已经排好序的序列中元素大于新元素,则将该元素往右移动一个位置。
         4. 重复步骤3,直到已排好序的元素小于或等于新元素。
         5. 在当前位置插入新元素。
         6. 重复步骤2。 平均时间复杂度:O(n^2) 平均空间复杂度:O(1)

代码示例:

 for (i = 1; i < 10; i ++) {
            t = a[i];
            for (j = i; j > 0 && t < a[j-1];j--) {
                a[j] = a[j - 1];
            }
            a[j] = t;
        }
  1. 选择排序
    假设第一个元素是最小值,下标记为min,循环剩余元素,记下下标,再与之前的最小值相比较,以此不断找出最小值,排到最前面

     for (i= 0; i < 10; i++) {
         min = i;
         for (j = i+1; j < 10; j++) {
             if (a[min] > a[j]) {
                 min = j;
             }
         }
         //说明a[min]目前不是最小值,需要交换位置
         if (min != i) {
             t = a[min];
             a[min] = a[i];
             a[i] = t;
         }
     }
    

结尾
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值