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]);  //每一輪下來,交換位置
           }
       }
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章