C++ 中的排序
在本节中我们将学习如何在 C++ 中执行排序算法。排序的数组是指其中的每个元素都已按特定顺序(如数值、字母等)进行排序的数组。有很多算法可以对数值数组进行排序,如冒泡排序、插入排序、选择排序、归并排序、快速排序、堆排序等。下面将介绍有关使用选择排序对数组进行排序的更多详细信息。
选择排序是一种排序方法,可得到一个排序的数组。它的工作原理是:反复找到数组中最小的元素,然后将其与未排序部分起始位置的元素进行交换。
下面给出了一个使用选择排序对数组进行排序的程序。
示例
#include<iostream>
using namespace std;
void selectionSort(int a[], int n) {
int i, j, min, temp;
for (i = 0; i < n - 1; i++) {
min = i;
for (j = i + 1; j < n; j++)
if (a[j] < a[min])
min = j;
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
int main() {
int a[] = { 22, 91, 35, 78, 10, 8, 75, 99, 1, 67 };
int n = sizeof(a)/ sizeof(a[0]);
int i;
cout<<"Given array is:"<<endl;
for (i = 0; i < n; i++)
cout<< a[i] <<" ";
cout<<endl;
selectionSort(a, n);
printf("\nSorted array is: \n");
for (i = 0; i < n; i++)
cout<< a[i] <<" ";
return 0;
}输出
Given array is: 22 91 35 78 10 8 75 99 1 67 Sorted array is: 1 8 10 22 35 67 75 78 91 99
在上述程序中,selectionSort() 是一个使用选择排序对数组 a[] 进行排序的函数。selectionSort() 中有两个 for 循环。在外部 for 循环的每次迭代中,找到 i 之后的剩余数组中的最小元素,然后将其与当前位于 i 的元素交换。该过程将一直重复,直到数组排序完毕。如下所示。
void selectionSort(int a[], int n) {
int i, j, min, temp;
for (i = 0; i < n - 1; i++) {
min = i;
for (j = i + 1; j < n; j++)
if (a[j] < a[min])
min = j;
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}在 main() 函数中,定义了数组 a[]。然后,调用函数 selectionSort(),其中包含数组 a[] 及其大小 n。最后,显示排序后的数组。如下所示。
int main() {
int a[] = { 22, 91, 35, 78, 10, 8, 75, 99, 1, 67 };
int n = sizeof(a)/ sizeof(a[0]);
int i;
cout<<"Given array is:"<<endl;
for (i = 0; i < n; i++)
cout<< a[i] <<" ";
cout<<endl;
selectionSort(a, n);
printf("\nSorted array is: \n");
for (i = 0; i < n; i++)
cout<< a[i] <<" ";
return 0;
}
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP