用c语言实现输入10个数,编程实现插入排序、快速排序、选择排序三类算法。
时间: 2023-12-17 21:02:33 浏览: 50
以下是用C语言实现输入10个数,以及插入排序、快速排序、选择排序三类算法的代码:
```c
#include<stdio.h>
void insert_sort(int arr[], int len);
void quick_sort(int arr[], int left, int right);
void select_sort(int arr[], int len);
int main()
{
int arr[10];
int i;
// 输入10个数
printf("请输入10个整数:\n");
for(i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
// 插入排序
printf("插入排序结果为:\n");
insert_sort(arr, 10);
for(i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
// 快速排序
printf("快速排序结果为:\n");
quick_sort(arr, 0, 9);
for(i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
// 选择排序
printf("选择排序结果为:\n");
select_sort(arr, 10);
for(i = 0; i < 10; i++)
{
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
// 插入排序
void insert_sort(int arr[], int len)
{
int i, j, temp;
for(i = 1; i < len; i++)
{
temp = arr[i];
for(j = i - 1; j >= 0 && arr[j] > temp; j--)
{
arr[j+1] = arr[j];
}
arr[j+1] = temp;
}
}
// 快速排序
void quick_sort(int arr[], int left, int right)
{
int i, j, temp;
if(left < right)
{
i = left;
j = right;
temp = arr[i];
while(i < j)
{
while(i < j && arr[j] >= temp)
{
j--;
}
if(i < j)
{
arr[i++] = arr[j];
}
while(i < j && arr[i] < temp)
{
i++;
}
if(i < j)
{
arr[j--] = arr[i];
}
}
arr[i] = temp;
quick_sort(arr, left, i-1);
quick_sort(arr, i+1, right);
}
}
// 选择排序
void select_sort(int arr[], int len)
{
int i, j, temp, min;
for(i = 0; i < len-1; i++)
{
min = i;
for(j = i+1; j < len; j++)
{
if(arr[j] < arr[min])
{
min = j;
}
}
if(min != i)
{
temp = arr[i];
arr[i] = arr[min];
arr[min] = temp;
}
}
}
```
注意:以上代码中的三个排序算法都是基于数组实现的,而不是链表实现的。如果要使用链表实现这些排序算法,需要做一些修改。