void sort(int * source,int n) //冒泡排序
{
int temp;
for(int i =0;i<n;i++)
{
for(int i=0;i<n-1;i++)
{
if(*(source+i)>*(source+i+1))
temp=*(source+i),*(source+i)=*(source+i+1),*(source+i+1)=temp;
}
}
}
void sort(int * source,int n) //选择排序
{
int min,temp;
for(int i=0;i<n;i++)
{
min=i; //默认每一次第一个是最小的
for(int j=i;j<n;j++)
{
if(*(source+min)>*(source+j))
min=j;
}
temp=*(source+i);
*(source+i)=*(source+min);
*(source+min)=temp;
}
}
void sort(int * source,int n)
{
int temp,x ;
for(int i= 1;i<n;i++) //每一趟都要把当前的数插入到前面的序列中
{
x=i;//默认插到后面
temp=*(source+i);
for(int j=0;j<i;j++) //哨兵去找插入的位置:第一个大于temp的前面
{
if(*(source+j)>temp)
{
x=j;
break; //找到了位置j
}
}
for(int k=i;k>x;k--)
*(source+k)=*(source+k-1);
*(source+x)=temp;
}
}
*/
void quickSort(int s[], int l, int r) //快速排序
{
if (l< r)
{
int i = l, j = r, x = s[l];
while (i < j)
{
while(i < j && s[j]>= x) // 从右向左找第一个小于x的数
j--;
if(i < j)
s[i++] = s[j];
while(i < j && s[i]< x) // 从左向右找第一个大于等于x的数
i++;
if(i < j)
s[j--] = s[i];
}
s[i] = x;
quickSort(s, l, i - 1); // 递归调用
quickSort(s, i + 1, r);
}
}
四个常见排序算法
最新推荐文章于 2022-07-28 14:35:38 发布