展开

关键词

C++ 插入排序冒泡排序和选择排序

大学的时候学过C,现在已经忘得七七八八了,现在想再学一下C/C++。 刚试着重写/温习了3个最简单的排序算法。 插入排序:依次将右边未排序的元素插入到左边已排序序列的合适位置。 float* sort_insertion(float a[], int len_a) { /*插入排序 类似我们排序扑克牌*/ for(int i=1; i < len_a; i++) j];//大的往后退一位 a[j+1] = to_insert;//a[j] > to_insert 不成立时 j+1的值即是待插入的位置 } return a; } 冒泡排序和选择排序大学都学过 冒泡排序: 时间复杂度:O(n^2) float* sort_bubble(float a[], int len_a) { /*冒泡排序 依次比较相邻的两个元素,如果顺序错误就将它们的位置交换 : 时间复杂度:O(n^2) float* sort_selection(float a[], int len_a) { /*选择排序 依次将左边未排序序列中的最大元素,存放到右边已排序序列的左端

62220

学习|C++冒泡排序小习题

使用冒泡排序把输入的字符串数组进行按字母顺序的排序。 因为是已经排序好的数组,我们就开始遍历数组,在新数组中不存在的就插入,然后每个字符串都与新数组中最后一个字符串进行对比,如果相同的就排除,如果不同的就插入到新数组中。 这样最后新的数组中就存在的不重复的而且已经排序好了数组,进行输出即可。 Tips 上面的解决方法中,开始先使用冒泡排序的时间复杂度为O(n2),排好序后遍历原来的数组的时间复杂度为O(n),对比新数组中的数据就可以不再需要遍历查找了,因为前面我们已经排过序,所以对比最后一次插入的数据的时间复杂度为 //使用冒泡排序重新做了排序 int n = vtpre.size() - 1; for (int i = 0; i < n; ++i) { for (int j =

20510
  • 广告
    关闭

    腾讯云校园大使火热招募中!

    开学季邀新,赢腾讯内推实习机会

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    排序——冒泡排序

    冒泡排序 比较相领的元素 - 如果第一个比第二个大(升序),就交换他们两个。 - 对每一个相领元素作同样的工作,从开始第一对到结尾的最后一对。 - 这步做完后,最后的元素会是最大的数。 > n; cout << "请输入数组元素:"; for (int i = 0; i < n; i++) cin >> a[i]; // 输入数组a f(a, n); cout << "排序后的元素为 int i = 0; i < n; i++) cout << a[i] << " "; cout << endl; return 0; }请输入数组长度:5 请输入数组元素:8 4 9 2 1 排序后的元素为 复杂度计算 - 最优时间复杂度:O(n) (表示遍历一次发现没有任何可以交换的元素,排序结束。) - 最坏时间复杂度:O(n^2) - 稳定性:稳定 ************ python代码实现 '''冒泡排序-BubbleSort''' def bubble_sort(alist): for

    15185

    # 冒泡排序

    # 冒泡排序 # 原理 从无序集合的第一个元素开始,每次取当前元素以及下一个元素进行比较, 大的放在后面,这样一轮比较完后,最大的元素就变成了最后一个, 以此模式进行多轮比较以得出有序集合。 # 原理图 无 # 实现 inputArr = [10, 34, 29, 4, 0, 34, 5, 4, 36, 1, 8] print("未排序集合:{0}".format(inputArr)) length maxIndex-1], inputArr[maxIndex] =\ inputArr[maxIndex], inputArr[maxIndex-1] print("已排序集合

    20930

    冒泡排序

    19700

    冒泡排序

    冒泡排序的基本思想是:每次比较两个相邻的元素,如果他们顺序错误就把他们交换过来。 那么每一趟就是把一个数归位了。

    5820

    冒泡排序

    冒泡排序冒泡排序的思路: 比较相邻的元素。 重复步骤1-3,直到排序完成。 a[i] + ","); } } } Copyright: 采用 知识共享署名4.0 国际许可协议进行许可 Links: https://lixj.fun/archives/冒泡排序

    3810

    冒泡排序

    1、冒泡排序法 作用: 最常用的排序算法,对数组内元素进行排序 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。 重复以上的步骤,每次比较次数-1,直到不需要比较 关键: 每一行的检测次数是该行元素数-1 每一列的检测次数等于总元素数-1 // 冒泡排序 for (int i = 0; i < sum - 1; i include <iostream> using namespace std; // 主函数 int main() { int arr[] = { 1,3,5,7,9,2,4,6,8 }; // 待排序数组 int sum = sizeof(arr) / sizeof(int); // 数组长度 // 冒泡排序 for (int i = 0; i < sum - 1; i++) { for (int

    3720

    排序——冒泡排序

    冒泡排序 基本思想 依次比较相临两个数据元素的大小,若逆序则交换两个数据元素,否则不交换。 当完成一趟交换以后,最大的元素将会出现在数据序列的最后一个位置。 重复以上过程,直到待排序序列中没有逆序为止。 每趟结束时,不仅能挤出一个最大值到最后面位置,还能同时部分理顺其他元素; **一旦下趟没有交换,还可提前结束排序** 算法实现 c++代码实现 // 原始冒泡排序 void bubblf_sort L.r[j]; L.r[j] = L.r[j + 1]; L.r[j + 1] = temp; change = true; } } } python代码实现 '''冒泡排序 ,比较次数为 n-1,不移动 - 最坏情况下:需 n-1趟排序,第i趟比较n-i次,移动3(n-i)次 空间复杂度为 O(1) 是一种稳定的排序方法

    15885

    排序-冒泡排序

    排序算法之【冒泡排序】 在写代码之前我们需要对冒泡排序有一个逻辑上的理解:即什么是冒泡排序呢? 冒泡排序排序算法的其中一种,该排序的逻辑理解起来较为容易,理解上可以有两种方式,一种中正向的思维,一种是逆向的思维,什么意思呢?所谓的正向思维就是从前往后,从左往右,从上到下。 下面来说一正向思维下的冒泡排序: 例如给你一组数据:{1, 34, 56, 8, -32, 7, -9, 0, 235 }在正向思维下的排序方式就是从左到右的进行排序,其排序的是按照第一个数和第二个数比较大小 : /** * @author yxm * 正向思维下的冒泡排序 * */ public class MaoPaoSort { public static void main(String[] 逆向思维下的代码块: /** * @author yxm * 逆向思维下的冒泡排序 * */ public class MaoPaoSort { public static void

    3010

    冒泡排序

    交换类排序的思想是通过一系列交换逆序元素进行排序的方法,经典的交换排序算法有冒泡排序和快速排序冒泡排序应该算是最简单的排序算法了,其过程如下: 1. 比较相邻的元素。

    24620

    冒泡排序

    冒泡排序在一组需要排序的数组中,对两两数据顺序与要求顺序相反时,交换数据,使大的数据往后移,每趟排序将最大的数放在最后的位置上,数据的变化像冒泡一样往上升的。

    6610

    冒泡排序

    冒泡排序的基本概念 冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。 冒泡排序还有一种优化算法,就是立一个 flag,当在一趟序列遍历中元素没有发生交换,则证明该序列已经有序。但这种改进对于提升性能来说并没有什么太大作用。 冒泡排序的算法步骤 比较相邻的元素。 冒泡排序的分析 冒泡排序的算法时间分析 比较和交换需要一个以常量为界的时间,我们称之为c。 (标准)Bubble Sort中有两个嵌套循环。 外循环正好运行N次迭代。 冒泡排序什么时候最快: 当输入的数据已经是正序时(都已经是正序了,我还要你冒泡排序有何用啊)。 冒泡排序什么时候最慢: 当输入的数据是反序时(写一个 for 循环反序输出数据不就行了,干嘛要用你冒泡排序呢,我是闲的吗)。

    8020

    - 冒泡排序

    15430

    选择排序冒泡排序

    选择排序 import java.util.Arrays; public class XuanZe { public static void main(String[] args) { //选择排序 //小--->大 int[] arr = {4, 7, 1, 2, 5}; for(int i = 0; i < arr.length - Arrays.toString(arr)); } } System.out.println(Arrays.toString(arr)); } } 冒泡排序 import java.util.*; public class MaoPao { /* * 冒泡排序

    20220

    排序算法-冒泡排序

    排序算法-冒泡排序 <? php /** * 冒泡排序 * * @param array $value 待排序数组 * * @return array */ function bubble($value = []) ]; $value[$i] = $tmp; } } } return $value; } /** * 优化冒泡排序 * * @param array $value 待排序数组 * @return array */ function bubble_better($value = []) { $flag if ($value[$i] > $value[$i+1]) { $flag = true; // 如果还有交换发生 则排序未完成 $last

    364110

    排序冒泡排序

    无论你学习哪种编程语言,在学到循环和数组时,通常都会介绍一种排序算法来作为例子,而这个算法一般就是冒泡排序。并不是它的名称很好听,而是说这个算法的思路最简单,最容易理解。 因此,哪怕大家可能都已经学过冒泡排序了,我们还是从这个算法开始我们的排序之旅。 基本思想    两两比较相邻记录的关键字,如果反序则交换,直到没有反序的记录为止。 冒泡的实现在细节上可以很多种变化,我们就最简单的一种冒泡实现代码,来讲解冒泡排序的思想。 总结   冒泡排序是比较好理解的,应该是没什么难点,但是上述的代码是可以改善的。 对改善实在是没有办法的,可以点这里,讲到了冒泡排序的优化。

    21240

    排序算法】-冒泡排序

    前言 冒泡排序是所有排序算法里最为简单的一种,也是面试经常让你手写的一种算法。 说实话在此之前我也写不出来冒泡,所以在算法这块我也是下过功夫的,今天我就来通俗讲解冒泡排序的原理,让大家对冒泡有更深对印象,核心代码五行左右,so easy! 正文 首先冒泡对意思是什么呢,鱼在水里吐泡泡的时候,由于压强原因,越上升泡泡越大,所以冒泡排序默认是从小到大排序的算法。 上述我说的次数是内层循环的对比次数,也是内层的循环次数,可见有很多循环是没必要的,因为数组并没有更改,所以说直接这样使用冒泡排序是不理想的。 我用了4个长度的数组就要循环这么多次,如果长度是几万的那简直是灾难,冒泡排序适用于数组长度在1万以内的。所以我们要对上面对代码进行优化。

    24920

    冒泡排序-排序算法

    17330

    冒泡排序

    #include<stdio.h> void BubbleSort(int n,int a[]) { for(int i=0;i<n-1;i++) ...

    39750

    相关产品

    • 腾讯云搜

      腾讯云搜

      云端全托管的搜索服务,支持从数据导入、检索串识别,搜索结果获取与排序,到数据运营全过程的一站式服务。帮助用户快速构建网站搜索、APP搜索、企业搜索等服务。

    相关资讯

    热门标签

    活动推荐

    扫码关注腾讯云开发者

    领取腾讯云代金券