您的位置:首页 > 编程语言 > C语言/C++

用C语言编写一个程序,对整型数组排序(冒泡排序,选择排序)

2018-02-23 15:05 423 查看
冒泡排序:
void Bubblesort(int *arr, int sz)//冒泡排序
{
for (int j = sz - 1; j >= 0; j--)//控制趟数
{

for (int i = 0; i+1 <= j; i++)//控制每趟多少次
{
if (arr[i] > arr[i + 1])
{

int tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
}
}
}
}
int main()
{
int arr[5] = { 1,3,5,4,2};
int sz = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i <= sz-1; i++)
{
scanf("%d", &arr[i]);
}
Bubblesort(&arr, sz);
for (int i = 0; i <= sz-1; i++)
{
printf("%d ", arr[i]);
}
system("pause");
return 0;
}

选择排序:每次选出最大的void Swap(int *a, int *b)
{

int tmp = *a;
*a = *b;
*b = tmp;
}

void Selectsort(int *arr, int sz)
{for (int end=sz-1; end>=0; end--)
{
int max = end;
int i;
for ( i = 0; i <= end; i++)//选出最大下标
{
if (arr[i] > arr[max])
{
max = i;
}
}
Swap(&arr[end], &arr[max]);
}
}
int main()
{
int arr[5] = { 1, 3, 2, 5, 4 };
int sz = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i <= sz - 1; i++)
{
scanf("%d", &arr[i]);
}
Selectsort(arr, sz);
for (int i = 0; i <= sz - 1; i++)
{
printf("%d ", arr[i]);
}
system("pause");
return 0;
}
选择排序改进版:每次选出最大,最小的
void Swap(int *a, int *b)
{

int tmp = *a;
*a = *b;
*b = tmp;
}

void Selectsort
4000
(int *arr, int sz)
{
int start = 0;
for (int end = sz - 1; end >= start; end--)
{
int min = end;
int max = end;
int i;
for (i = start; i <= end; i++)//每次选出最大,最小下标
{
if (arr[i] > arr[max])
{
max = i;
}
if (arr[i] < arr[min])
{
min = i;
}
}
Swap(&arr[end], &arr[max]);
if (end == min)//确保选到的那个最小的没有被交换
{
min = max;
}
Swap(&arr[start], &arr[min]);
start++;
}
}
int main()
{
int arr[5] = { 1, 3, 2, 5, 4 };
int sz = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i <= sz - 1; i++)
{
scanf("%d", &arr[i]);
}
Selectsort(arr, sz);
for (int i = 0; i <= sz - 1; i++)
{
printf("%d ", arr[i]);
}
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐