插入排序
void InsertSort(vector<int> &A)
{
for(int j = 1; j < A.size(); j++)
{
int key = A[j];
int i = j-1;
while( (i>0 || i==0) && A[i]>key)
{
A[i+1] = A[i];
i--;
}
A[i+1] = key;
}
}
合并排序
快速排序
void exchange(int &a, int &b)
{
int temp = b;
b = a;
a = temp;
}
int Partition(vector<int> &A, int num_first, int num_last)//num first 1 numlast = size()-1
{
int x = A[num_last];//array length : num_last+1
int i = num_first-1;
for(int j = num_first;j<num_last;j++)
{
if( (A[j] < x) || (A[j] == x))
{
i = i+1;
exchange(A[i],A[j]);
}
}
exchange(A[i+1],A[num_last]);
return i+1;
}
void QuickSort(vector<int> &A, int num_first, int num_last)
{
if(num_first<num_last)
{
int mid = Partition(A, num_first, num_last);
QuickSort(A, num_first, mid-1);
QuickSort(A, mid+1, num_last);
}
}