用选择法对10个整数排序。cpp
时间: 2023-06-12 12:05:46 浏览: 81
以下是使用选择排序算法对10个整数进行排序的C++代码:
```cpp
#include <iostream>
using namespace std;
int main() {
int arr[10] = {5, 9, 3, 7, 1, 8, 2, 4, 6, 0}; // 10个整数数组
int n = 10; // 数组元素数量
int i, j, min_idx;
// 选择排序算法
for (i = 0; i < n-1; i++) {
min_idx = i;
for (j = i+1; j < n; j++) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
// 交换元素
int temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
}
// 输出排序后的数组
cout << "排序后的数组:";
for (i = 0; i < n; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}
```
输出结果为:
```
排序后的数组:0 1 2 3 4 5 6 7 8 9
```
相关问题
用选择法对任意10个整数排序cpp
下面是使用选择排序算法对10个整数进行排序的cpp代码:
```cpp
#include <iostream>
using namespace std;
void selectionSort(int arr[], int n) {
int i, j, min_idx;
for (i = 0; i < n-1; i++) {
min_idx = i;
for (j = i+1; j < n; j++)
if (arr[j] < arr[min_idx])
min_idx = j;
swap(arr[min_idx], arr[i]);
}
}
int main() {
int arr[] = {64, 25, 12, 22, 11, 1, 3, 7, 17, 19};
int n = sizeof(arr)/sizeof(arr[0]);
selectionSort(arr, n);
cout << "Sorted array: \n";
for (int i=0; i < n; i++)
cout << arr[i] << " ";
cout << endl;
return 0;
}
```
输出结果:
```
Sorted array:
1 3 7 11 12 17 19 22 25 64
```
在这个程序中,我们定义了一个名为`selectionSort`的函数来实现选择排序算法。该函数接受两个参数:待排序的数组和数组的大小。在函数内部,我们使用两个for循环来遍历数组,找到未排序部分的最小元素并将其交换到已排序部分的最右端。最后,我们在主函数中调用`selectionSort`函数并输出排序后的数组。
c++用选择法对十个整数排序
在C++中,对十个整数进行排序通常会使用内置的数据结构如`std::vector<int>`配合标准库提供的算法,例如快速选择法、冒泡排序、插入排序或归并排序等。这里以快速选择法为例,它是一种类似于快速排序的非比较型排序算法,用于查找第k小的元素,适用于数据部分有序的情况。
以下是使用快速选择法对十个整数进行排序的一个简单示例:
```cpp
#include <vector>
#include <cstdlib> // 需要用到随机函数
// 快速选择函数,返回第k小的元素索引
int quickSelect(std::vector<int>& nums, int k) {
int left = 0;
int right = nums.size() - 1;
while (left <= right) {
// 选一个pivot
int pivotIndex = rand() % (right - left + 1) + left; // 随机选取中间位置
int newPivotIndex = partition(nums, left, right, pivotIndex);
if (newPivotIndex == k - 1)
return newPivotIndex; // 找到了第k小的元素
else if (newPivotIndex > k - 1)
right = newPivotIndex - 1;
else
left = newPivotIndex + 1;
}
throw std::out_of_range("Element not found"); // 如果k超出范围
}
// 对nums[left...right]进行分区,返回新的枢轴索引
int partition(std::vector<int>& nums, int left, int right, int pivotIndex) {
int pivotValue = nums[pivotIndex];
std::swap(nums[pivotIndex], nums[right]);
int storeIndex = left;
for (int i = left; i < right; ++i) {
if (nums[i] < pivotValue) {
std::swap(nums[i], nums[storeIndex]);
storeIndex++;
}
}
std::swap(nums[right], nums[storeIndex]); // 将pivot放回正确的位置
return storeIndex;
}
void sortTenNumbers(int arr[], int n) {
std::vector<int> vec(arr, arr + n); // 转换为vector便于操作
int k = 5; // 假设我们想要找到第五小的数字,可以根据需要调整
int sortedIndex = quickSelect(vec, k);
// 如果需要,可以将vec的排序结果复制回原数组arr
// arr[sortedIndex] = vec[sortedIndex]; (假设arr足够大)
}
int main() {
int numbers[] = {9, 2, 7, 4, 5, 8, 1, 6, 3, 10};
sortTenNumbers(numbers, sizeof(numbers) / sizeof(numbers[0]));
// 输出已排序的数组
for (int num : numbers) {
std::cout << num << " ";
}
return 0;
}
```
阅读全文