21xrx.com
2024-12-22 23:06:41 Sunday
登录
文章检索 我的文章 写文章
C++一本通1.10:编程基础之简单排序03
2023-06-24 12:07:20 深夜i     --     --
C++ 编程基础 简单排序

在C++编程中,排序算法是非常基础而重要的一个知识点。本篇文章将介绍简单排序的基本思路以及如何在C++中实现。

简单排序包括冒泡排序、选择排序和插入排序三种方法。这三种方法都基于比较相邻元素大小的原理,依次交换和移动元素位置,完成排序。其中,冒泡排序是最为简单的方法,但时间复杂度较高,通常只适用于少量数据的排序。选择排序和插入排序时间复杂度都较低,适用于中小规模的数据排序。

首先,我们来看冒泡排序。冒泡排序的基本思路是比较相邻元素大小,如果前面的元素比后面的大,则交换它们的位置。这样从第一对元素开始比较,直到最后一对元素为止。这时第一轮排序完成,将最后一个元素选出。接下来,进行第二轮排序,比较除最后一个之外的其他元素,选择出次大元素,以此类推,直到排序完成。

在C++中,我们可以用双重循环语句来实现冒泡排序。具体实现方法如下:


void bubbleSort(int arr[], int len){

  for(int i=0; i<len-1; i++){      //控制循环次数

    for(int j=0; j<len-i-1; j++){   //在每次循环中比较相邻元素

      if(arr[j]>arr[j+1]){      //如果前面的元素比后面的大,则交换它们的位置

        swap(arr[j], arr[j+1]);

      }

    }

  }

}

接着,我们来看选择排序。选择排序的基本思路是,找到最小(大)元素,将其放在数组的起始位置;接下来,从第二个元素开始,再找到最小(大)元素,放在已排序部分的后面。依次进行,直到排序完成。

同样地,在C++中,我们也可以用双重循环语句来实现选择排序。具体实现方法如下:


void selectSort(int arr[], int len){

  for(int i=0; i<len-1; i++){      //控制循环次数

    int minIndex = i;         //将未排序部分的第一个元素视为最小值

    for(int j=i+1; j<len; j++){    //在未排序部分中寻找最小值

      if(arr[j]<arr[minIndex])   //如果当前元素比最小值还小

    }

    swap(arr[i], arr[minIndex]);   //将最小值与未排序部分第一个元素交换位置

  }

}

最后,我们来看插入排序。插入排序的基本思路是,将未排序部分的第一个元素插入到已排序部分的合适位置,逐步扩大已排序部分,直到所有元素都排好序。

同样地,在C++中,我们也可以用双重循环语句来实现插入排序。具体实现方法如下:


void insertSort(int arr[], int len){

  for(int i=1; i<len; i++){      //控制循环次数

    int j = i;

    while(j>0 && arr[j]<arr[j-1]){  //在已排序部分中寻找插入位置

      swap(arr[j], arr[j-1]);   //向前移动元素,为当前元素腾出位置

      j--;

    }

  }

}

通过以上三个算法的介绍和实现方式,我们可以看出,冒泡排序、选择排序和插入排序虽然具有不同的特点和用处,但它们的基本思路都是比较和交换元素,依次排序。在实际应用中,需要根据不同的场景选择不同的排序算法来达到最佳的效果。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复