首页 > 编程语言 > 详细

数据结构--排序基础算法

时间:2021-05-14 15:17:25      阅读:20      评论:0      收藏:0      [点我收藏+]

1.插入排序
时间复杂度O(N^2)
空间复杂度O(1)

vector<int> insertionSort9(vector<int>& nums) {
        if(nums.size <= 1)
            return nums;
        for(int i = 1; i < nums.size(); i++)
        {
            int v = nums[i];        //临时变量保存nums[i]的值
            int j = i - 1;            
            while(j >= 0 && nums[j] > v)  //在已排序部分寻找插入位置
            {
                nums[j + 1] = nums[j];
                j--;
            }
            nums[j + 1] = v;
        }
        return nums;
    }

2.冒泡排序
时间复杂度:O(N^2)
空间复杂度:O(1)

   vector<int> bubbleSort(vector<int>& nums) {
      if(nums.size() <= 1)
          return nums;
      bool flag = true;
      for(int i = 0; flag; i++)
      {
          flag = false;
          for(int j = nums.size() - 1; j >= i + 1; j--)
          {
              if(nums[j - 1] > nums[j])
              {
                  int temp = nums[j - 1];
                  nums[j - 1] = nums[j];
                  nums[j] = temp;
                  flag = true;
              }
          }
      }
      return nums;
  }

3.选择排序
时间复杂度:O(N^2)
空间复杂度:O(1)

   vector<int> sortArray(vector<int>& nums) {
       
       for(int i = 0; i < nums.size() - 1; i++)
       {
           int minNum = i;
           for(int j = i + 1; j < nums.size(); j++)   //从未排序序列中选取最小值,记录最小值位置
           {
               if(nums[j] < nums[minNum])
               {
                   minNum = j;
               }
           }
            int temp = nums[minNum];   
            nums[minNum] = nums[i];
            nums[i] = temp;
       }
       return nums;
   }
};

数据结构--排序基础算法

原文:https://www.cnblogs.com/ZigHello/p/14767988.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!