463、整數排序
阿新 • • 發佈:2018-11-11
題目要求:
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]); //每一輪下來,交換位置 } } } };