/************选择排序*************/
void selectsort(int str[],int n)
{
int i,j;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(str[i]>str[j])
{
swap(str[i],str[j]);
}
}
}
}
/************选择排序*************/
/************堆排序***************/
void HeadAdjust(int a[],int s,int len)
{
int i,j;
j = s*2+1;//数组是0开始的话注意是s*2+1而不是s*2;
int term = a[s];
while(j<len)
{
if(j+1<len&&a[j]<a[j+1])//注意是比较j+1<len而不是j<len
j++;
if(j<len&&term>=a[j]) //容易出错的地方,注意是term与a[j]比较
break;
a[s] = a[j];
s = j;
j = j*2+1;
}
a[s] = term;
}
void Headsort(int a[], int len)
{
int i;
for(i=len/2-1;i>=0;--i)//注意数组从0开始大的话初始值是len/2-1
{
HeadAdjust (a,i,len);
}
prin (a,len);
}
/************堆排序***************/
/************插入排序*************/
void Insertsort(int a[],int len)
{
int i,j;
int term;
for(i=1;i<len;i++)
{
if(a[i]<a[i-1])
{
term = a[i];
a[i] = a[i-1];
for(j=i-2;a[j]>term;j--)
a[j+1] = a[j];
a[j+1] = term;
}
}
prin (a,len);
}
/************插入排序*************/
/************快速排序*************/
void QuitSort(int arr[], int l, int r)
{
int term = arr[l];
int left = l;
int right = r;
if (l>r)
{
return;
}
while (left<right)
{
while (left<right&&arr[right]>term)
{
right--;
}
if (left<right)
{
arr[left++] = arr[right];
}
while (left < right&&arr[left] < term)left++;
if (left < right){
arr[right--] = arr[left];
}
}
arr[left] = term;
QuitSort(arr, l, left - 1);
QuitSort(arr, left + 1, r);
}
/************快速排序*************/