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;
}

更新于:2023年9月14日

27K+ 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告