排序数组是一种数组,其中的每个元素都按某种顺序排序,例如数字,字母等。有很多算法可以对数字数组进行排序,例如气泡排序,插入排序,选择排序,合并排序,快速排序,堆排序等。下面提供有关使用选择排序对数组进行排序的更多详细信息。
选择排序是一种产生排序数组的排序方法。它通过重复查找数组中的最小元素并将其与未排序部分开始处的元素互换来实现。
给出了使用选择排序实现排序数组的程序,如下所示。
#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<<"给定的数组是:"<<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; }
给定的数组是: 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 []进行排序的函数。中有两个for循环selectionSort()
。在外部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<<"给定的数组是:"<<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; }