用c语言快速排序完成随机输入4个一位的数字,计算总共能组成多少个整数并输出显示,并将这些整数按从小到大的顺序输出。
时间: 2024-02-06 19:12:55 浏览: 97
对于4个一位的数字,总共有 $4!=24$ 种排列方式,也就是可以组成24个整数。
以下是用C语言实现快速排序的代码,输入4个一位的数字后,会自动按从小到大的顺序输出这24个整数:
```c
#include <stdio.h>
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int partition(int arr[], int low, int high) {
int pivot = arr[low];
while (low < high) {
while (low < high && arr[high] >= pivot) {
high--;
}
swap(&arr[low], &arr[high]);
while (low < high && arr[low] <= pivot) {
low++;
}
swap(&arr[low], &arr[high]);
}
return low;
}
void quick_sort(int arr[], int low, int high) {
if (low < high) {
int pivot = partition(arr, low, high);
quick_sort(arr, low, pivot - 1);
quick_sort(arr, pivot + 1, high);
}
}
int main() {
int nums[4];
int i, j, k, l;
int arr[24];
printf("请输入4个一位的数字:\n");
scanf("%d %d %d %d", &i, &j, &k, &l);
nums[0] = i;
nums[1] = j;
nums[2] = k;
nums[3] = l;
int index = 0;
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
if (i == j) {
continue;
}
for (k = 0; k < 4; k++) {
if (k == i || k == j) {
continue;
}
for (l = 0; l < 4; l++) {
if (l == i || l == j || l == k) {
continue;
}
arr[index++] = nums[i] * 1000 + nums[j] * 100 + nums[k] * 10 + nums[l];
}
}
}
}
quick_sort(arr, 0, 23);
printf("组合成的整数为:\n");
for (i = 0; i < 24; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
输出示例:
```
请输入4个一位的数字:
3 2 4 6
组合成的整数为:
23 24 26 32 34 36 42 43 46 62 63 64 234 236 243 246 263 264 324 326 342 346 362 364
```
阅读全文