C++程序按升序对数组的元素进行排序

为了有效地解决一些问题,重要的是将数据项排列在正确的位置 序列。最常见的排列问题之一是元素排序问题。这 本文将演示如何按升序排列数组成员C++(根据 到上升值)。

为了按特定顺序排列数字或非数字元素,各种各样的 此字段中提供了排序算法。只有两种简单的排序技术可以 本文将介绍。选择排序和冒泡排序。让我们逐一检查 单独使用适当的技术和C++实现代码。

使用气泡排序技术按升序对数组进行排序

对数组组件进行排序的最流行和最直接的方法之一是 气泡分拣方法。在此方法中,两个元素一个接一个地检查以 看看它们的顺序是否正确。如果没有,该方法将切换元素,直到它们 顺序正确。之后,向右移动并对另一组重复该过程 的值。单个元素在 气泡分选技术的每个阶段都有几个阶段。看看气泡排序 算法。

算法

  • 读取数组 A 及其大小 n 作为输入
  • 对于范围从 0 到 n-1 的 i,请执行
    • 对于范围从 0 到 n - 2 的 J,执行
      • 如果 A[j] > A[j + 1],则
        • 交换 A[j] 和 A[j + 1]
      • 结束如果
    • 结束
  • 结束



#include <iostream> using namespace std ; void display ( int arr [ ] , int n ) { for ( int i = 0 ; i < n ; i ++ ) { cout << arr [i ] << ", " ; } } void swap ( int &a , int &b ) { int temp = a ; a = b ; b = temp ; } void solve ( int arr [ ] , int n ) { int i , j ; for ( i = 0 ; i < n ; i ++ ) { for ( j = 0 ; j < n - 1 ; j ++ ) { if ( arr [j ] > arr [ j + 1 ] ) { swap ( arr [j ] , arr [ j + 1 ] ) ; } } } } int main ( ) { int arr [ ] = { 8 , 45 , 74 , 12 , 10 , 36 , 58 , 96 , 5 , 2 , 78 , 44 , 25 , 12 , 89 , 95 , 63 , 84 } ; int n = sizeof ( arr ) / sizeof ( arr [ 0 ] ) ; cout << "Array before sorting: " ; display (arr , n ) ; solve ( arr , n ) ; cout << "\nArray After sorting: " ; display (arr , n ) ; }

输出

<span style="color:#000000">Array before sorting: 8, 45, 74, 12, 10, 36, 58, 96, 5, 2, 78, 44, 25, 12, 89, 95, 63, 84, 
Array After sorting: 2, 5, 8, 10, 12, 12, 25, 36, 44, 45, 58, 63, 74, 78, 84, 89, 95, 96, 
</span>

使用选择排序技术按升序对数组进行排序

使用选择排序策略时,我们从索引 I 开始,一直工作到最后 在给定数组中,找到最小或最大元素。假设我们是 发现每一种成分。它定位从索引 I 到末尾的最小元素 每个阶段,将元素放置在适当的位置,然后重复该过程 从索引 I + 1 中查找下一个最大元素,依此类推。这些阶段将完成, 然后整个数组将被适当排序。

算法

  • 读取数组 A 及其大小 n 作为输入
  • 对于范围从 0 到 n-1 的 i,请执行
    • ind := 从 i 到 n 开始的 A 最小元素的索引
    • 如果 A[ i ] > A[ ind ],则
      • 交换 A[ i ] 和 A[ ind ]
    • 结束如果
  • 结束



#include <iostream> using namespace std ; void display ( int arr [ ] , int n ) { for ( int i = 0 ; i < n ; i ++ ) { cout << arr [i ] << ", " ; } } void swap ( int &a , int &b ) { int temp = a ; a = b ; b = temp ; } int min_index ( int arr [ ] , int n , int s , int e ) { int min = 99999 , min_ind = - 1 ; for ( int i = s ; i < e ; i ++ ) { if ( arr [i ] < min ) { min = arr [i ] ; min_ind = i ; } } return min_ind ; } void solve ( int arr [ ] , int n ) { int i , j , ind ; for ( i = 0 ; i < n ; i ++ ) { ind = min_index ( arr , n , i , n ) ; if ( arr [i ] > arr [ ind ] ) { swap ( arr [i ] , arr [ ind ] ) ; } } } int main ( ) { int arr [ ] = { 8 , 45 , 74 , 12 , 10 , 36 , 58 , 96 , 5 , 2 , 78 , 44 , 25 , 12 , 89 , 95 , 63 , 84 } ; int n = sizeof ( arr ) / sizeof ( arr [ 0 ] ) ; cout << "Array before sorting: " ; display (arr , n ) ; solve ( arr , n ) ; cout << "\nArray After sorting: " ; display (arr , n ) ; }

输出

<span style="color:#000000">Array before sorting: 8, 45, 74, 12, 10, 36, 58, 96, 5, 2, 78, 44, 25, 12, 89, 95, 63, 84, 
Array After sorting: 2, 5, 8, 10, 12, 12, 25, 36, 44, 45, 58, 63, 74, 78, 84, 89, 95, 96, 
</span>

结论

一个基本问题是排序,它涉及根据以下情况排列数字或其他项目 预定的布局逻辑。该领域还有许多其他可用的排序技术, 但在这篇文章中,我们将重点介绍两个易于使用和理解的。这两个 技术是选择排序技术和气泡排序技术。我们有 使用这两种技术按升序(非递减)顺序排列数据集。 虽然不是很省时,但这两种排序技术很简单。两者 这两种技术需要 O(n2),其中 n 是 输入。只需确定后续阶段是否不会有任何变化,如果有 在任何阶段都没有交换,气泡排序可以更快。

posted @ 2022-12-20 22:53  很酷的站长  阅读(386)  评论(0编辑  收藏  举报
70博客 AI工具 源码下载