void my_sort(int n) //冒泡 耗时15499ms
{
for(int i = 0;i < n;i ++)
for(int j = 0;j < n - i - 1;j ++)
if(s[j] > s[j + 1])
swap(s[j],s[j + 1]);
}
void my_sort(int n) //选择 耗时3580ms
{
for(int i = 0;i < n;i ++)
{
int min_index = i;
for(int j = i;j < n;j ++)
if(s[j] < s[min_index])
min_index = j;
swap(s[min_index],s[i]);
}
}
void my_sort(int n) //插入 耗时2809ms
{
int i,j;
for(i = 1;i < n;i ++)
{
int temp = s[i];
for(j = i - 1;j >= 0 && s[j] > temp;j --)
s[j + 1] = s[j];
s[j + 1] = temp;
}
}
void my_sort(int left,int right) //归并 耗时171ms
{
if(left >= right)
return ;
int length = right - left;
int mid = left + (length >> 1);
int start_1 = left,end_1 = mid;
int start_2 = mid + 1,end_2 = right;
my_sort(start_1,end_1);
my_sort(start_2,end_2);
int k = left;
while(start_1 <= end_1 && start_2 <= end_2)
TEMP[k ++] = s[start_1] < s[start_2] ? s[start_1 ++] : s[start_2 ++];
while(start_1 <= end_1)
TEMP[k ++] = s[start_1 ++];
while(start_2 <= end_2)
TEMP[k ++] = s[start_2 ++];
for(k = left;k <= right;k ++)
s[k] = TEMP[k];
}
void my_sort(int left,int right) //快排 耗时168ms
{
if(left >= right)
return ;
int key = s[right];
int small_index = left;
for(int i = left;i <= right;i ++)
if(s[i] < key)
{
swap(s[small_index],s[i]);
small_index ++;
}
if(s[small_index] > key)
swap(s[right],s[small_index]);
my_sort(left,small_index - 1);
my_sort(small_index + 1,right);
}