zoukankan      html  css  js  c++  java
  • 排序

    1.选择排序

    第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。

    void SelectSort(int arr[], int n)
    {
      for (int i = 0; i < n - 1; i++)
      {
        for (int j = i + 1; j < n; j++)
        {
          if (arr[i] > arr[j])
          {
            swap(arr, i, j);
          }
        }  
      }
    }     ——代码实现

    1、冒泡排序

    它重复地走访过要排序的元素列,依次比较两个相邻的元素

    void BubbleSort(int arr[], int n)
    {
      for (int i = 0; i < n - 1; i++)
      {
        for (int j = 0; j < n - 1 - i; j++)
        {
          if (arr[j] > arr[j + 1])
        {
          swap(arr, j + 1, j);
        }
       }
      }
    }
    void swap(int arr[], int x, int y)
    {
      int temp = arr[x];
      arr[x] = arr[y];
      arr[y] = temp;
    }   ——代码实现

    3、插入排序

    插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据

    void InsertSort(int arr[], int n)
    {
      int tempVal;
      for (int i = 1, j; i < n; i++)
    {
      tempVal = arr[i];
      for (j = i - 1; tempVal < arr[j] && j >= 0; --j)
      {
        arr[j + 1] = arr[j];
       }
      arr[j + 1] = tempVal;
      }
    }   ——代码实现

    4、桶(基数)排序

    这个排序真的非常巧妙,其实就是把本来一个未知数的值同时设置成了存储这个值所用的数组的下标,这样就可以直接输出最小或者最大值了(需要判断是否为0,如果是那就不需要输出)

    void ShellSort(int arr[], int n)
    {
      int tempVal, j;
      int jump = n >> 2;
      while (jump != 0)
      {
        for (int i = jump; i < n; i++)
      {
      tempVal = arr[i];
      for (j = i - jump; j >= 0 && tempVal < arr[j]; j -= jump)
        {
          arr[j + jump] = arr[j];
        }
        arr[j + jump] = tempVal;
      }
        jump = jump >> 1;
      }
    }    ——代码实现

    5.快排

    在某些考试中好像不能用,快排就是借助sort函数将一个数组进行排序,一般默认是升序也就是从小到大,也可以通过定义cmp使他成为降序排列,优点是速度快,但是不稳定,要用sort函数需要些<algorithm>头文件。

    
    

     

  • 相关阅读:
    Java 泛型,你了解类型擦除吗?
    终于有人把 Nginx 说清楚了,图文详解!
    给你一份超详细 Spring Boot 知识清单
    Java 中的 SPI 机制是什么鬼?
    用 Git 和 Github 提高效率的 10 个技巧!
    聊聊微服务架构及分布式事务解决方案!
    python多线程同步机制Lock
    python多线程同步机制Semaphore
    mysql 慢查询时间
    mysql row模式查看原始sql
  • 原文地址:https://www.cnblogs.com/dairuizhe/p/12467634.html
Copyright © 2011-2022 走看看