用C语言编写一个程序,对整型数组排序(冒泡排序,选择排序)
2018-02-23 15:05
423 查看
冒泡排序:
选择排序:每次选出最大的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;
}
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;
}
相关文章推荐
- c语言:编写冒泡排序,排序一个整形数组(从小到大)
- 怎样编写一个程序,把一个有序整数数组放到二叉树中? 编写实现链表排序的一种算法。说明为什么你会选择用这样的方法?
- C语言数组实现冒泡排序和选择排序程序
- 【C语言】编写冒泡排序,排序一个整形数组。
- [置顶] 实现一个选择排序程序,排序整型数组。
- c语言:编写冒泡排序,排序一个整形数组(从小到大)
- 实现一个选择排序程序,排序整型数组
- 【C语言】写冒泡排序可以排序一个整型数组。
- 实现一个选择排序程序,排序整型数组
- 实现一个选择排序程序,排序整型数组
- 【C语言】编写冒泡排序,排序一个整形数组。
- 写冒泡排序可以排序一个整型数组
- C语言数组实现冒泡排序和选择排序程序
- 编写一个程序,输入两个包含 5 个元素的数组,先将两个数组升序排序,然 后将这两个数组合并成一个升序数组(合并排序)。
- 定义一个数组工具类!数组选择排序、冒泡排序、获取最大、最小值!
- 【C语言编程】编写一个程序解决选择问题,令k=n/2
- [面试算法]有一无符号整型数组,大小为10, 初始的数值随机,但在[0, 99]之间。请用C语言写一个过滤程序,令数组内的数据互不相等。
- 写冒泡排序可以排序一个整型数组。
- 14.3 编写一个程序,显示一个整型静态数组 a(共 5 个元素)中指定下标的元素,并 用异常处理机制检测下标超界的情况。
- 编写冒泡排序,排序一个整形数组