//冒泡排序
void mp(void)
{
int arr[] = { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48 };
int i,j;
int tmp;
for(i = 0;i < 15-1;i++)
{
for(j = i+1;j < 15;j++)
{
if(arr[i] > arr[j])
{
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
}
for(i = 0;i < sizeof(arr) / sizeof(arr[0]); i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
//选择排序
void xz(void)
{
int arr[] = { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48 };
int i,j;
int tmp;
int minnum;
for(i= 0;i < 15-1;i++)
{
minnum = i;
for(j = i+1;j < 15;j++)
{
if(arr[minnum] > arr[j])
{
minnum = j;
}
}
tmp = arr[i];
arr[i] = arr[minnum];
arr[minnum] = tmp;
}
for(i = 0;i < sizeof(arr) / sizeof(arr[0]); i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
//插入排序
void cr(void)
{
int arr[] = { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48 };
int i,j,min,minnum;
for(i = 1;i < 15;i++)
{
min = arr[i];
minnum = i-1;
while((arr[minnum] > min) && (minnum >= 0))
{
arr[minnum+1] = arr[minnum];
minnum --;
}
arr[minnum+1] = min;
}
for(i = 0;i < sizeof(arr) / sizeof(arr[0]); i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
//希尔排序
void xe(void)
{
int arr[] = { 3, 44, 38, 5, 47, 15, 36, 26, 27, 2, 46, 4, 19, 50, 48 };
int i,j,min,minnum;
int d;
for(d = 15/2;d > 0;d /= 2)
{
for(i = d+1;i < 15;i += d)
{
min = arr[i];
minnum = i - d;
while((arr[minnum] > min) && (minnum >= 0))
{
arr[minnum+d] = arr[minnum];
minnum -= d;
}
arr[minnum + d] = min;
}
}
for(i = 0;i < sizeof(arr) / sizeof(arr[0]); i++)
{
printf("%d ",arr[i]);
}
printf("\n");
}
//快速排序
void ks(int arr[],int left,int right)
{
int pro = arr[left];
int low = left;
int high = right;
if(low >= high) return;
while(low < high)
{
while((arr[high] >= pro) && (low < high))
{
high --;
}
arr[low] = arr[high];
while((arr[low] <= pro) && (low < high))
{
low ++;
}
arr[high] = arr[low];
}
arr[low] = pro;
ks(arr,left,low-1);
ks(arr,low+1,right);
}
五种常用的排序算法
最新推荐文章于 2023-04-25 18:18:44 发布