c++用选择法对 10个整数排序
时间: 2024-05-25 13:06:29 浏览: 68
以下是使用C++实现选择排序对10个整数排序的示例代码:
```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, 2, 3, 4, 5};
int n = sizeof(arr)/sizeof(arr[0]);
selectionSort(arr, n);
cout << "Sorted array: \n";
for (int i=0; i < n; i++)
cout << arr[i] << " ";
return 0;
}
```
输出结果为:
```
Sorted array:
1 2 3 4 5 11 12 22 25 64
```
相关问题
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;
}
```
用选择法对十个整数排序用c++编码
以下是使用 C++ 编写的选择排序算法,可以对十个整数进行排序:
```
#include <iostream>
using namespace std;
void selectionSort(int arr[], int n)
{
int i, j, minIndex, tmp;
for (i = 0; i < n - 1; i++) {
minIndex = i;
for (j = i + 1; j < n; j++)
if (arr[j] < arr[minIndex])
minIndex = j;
if (minIndex != i) {
tmp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = tmp;
}
}
}
int main()
{
int arr[10] = { 64, 25, 12, 22, 11, 75, 21, 90, 8, 2 };
int n = sizeof(arr) / sizeof(arr[0]);
selectionSort(arr, n);
cout << "Sorted array: \n";
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
return 0;
}
```
输出结果为:
```
Sorted array:
2 8 11 12 21 22 25 64 75 90
```
阅读全文