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