463、整数排序

题目要求:

 1.插入排序

class Solution {
public:
     //插入排序
    void sortIntegers(vector<int> &A)
    {
        // write your code here
       for(int i =1;i<A.size();++i)  //从1位置开始
         while(i>0 && A[i] < A[i-1]) //如果满足i>0,且当前位置的值比前一个位置值小,则交换位置,
         {                           //并进行--i操作,否则说明满足升序,往后进行查找
             swap(A[i],A[i-1]);
             --i;
         }
    }
};

2.冒泡排序

class Solution {
public:
     //冒泡排序
    void sortIntegers(vector<int> &A)
    {
        // write your code here
       for(int i =0;i<A.size();i++)
       {
           for(int j=0;j<A.size()-i-1;j++) //从第一个开始,相邻元素两两比较,将小者放在大者前面
           {                              //经过第一遍排序,最大元素必然就位,故下次比较次数减一
               if(A[j] > A[j+1])
               {
                   swap(A[j],A[j+1]);
               }
           }
       }
       
         
    }
};

3.选择排序

class Solution {
public:
     //选择排序
    void sortIntegers(vector<int> &A)
    {
        // write your code here
        int mix,temp;
       for(int i =0;i<A.size();i++)  //每次循环找出最小元素放在前面,从而前面的是排序好的
       {
           mix=i;  //先假设一个最小元素mix,接下来不断去寻找最小元素
           for(int j=i+1;j<A.size();j++)//将上面假设的最小元素与接下来个元素比较,交换出最小元素
           {
               if(A[j] < A[mix])  //如果后面的小,将小的元素的位置赋值给最小元素位置参数变量
               {
                   mix=j;   
               }
           }
           if(i != mix)   
           {
               swap(A[i],A[mix]);  //每一轮下来,交换位置
           }
       }
    }
};

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值