代码先锋网 代码片段及技术文章聚合

冒泡/选择排序基础

技术标签: 编程学习进阶笔记  排序算法  嵌入式  编程语言

一、冒泡排序

算法思想:假设是从小到大排序

1.用当前位置的数与毗邻的数相比 。
2.若当前位置的数大于毗邻的数,则交换数值位置。
3.然后再用交换位置的那个大值数继续重复上面(2)的思路,
4.再重复(3)的思路。如此轮转之,直至排序完成。

void bubble_sort(int *arr,int len)//排序对象|对象数据个数
{
   int temp;
   
   for(int i=0;i<len-1;i++)//轮转次数
   {
      for(int j=0;j<len-1-i;j++)//比较次数
	  {
	    if(arr[j]>arr[j+1]) //若当前位置的数大于毗邻的数,则交换数值位置。
		{
		   temp     = arr[j];
		   arr[i]   = arr[j+1]; //即将较小值往左挪,用右边的较大值继续去与右边的数据比较
		   arr[j+1] = temp;		 
		}
	  }
   }
}

二、选择排序

算法思想: 假设是从小到大排序

1.首先在未排序序列中找到最小元素,存放到排序序列的起始位置,
2.然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
3.如此轮转之,直至排序完成。

void select_sort(int *arr,int len)//排序对象|对象数据个数
{
  int m,temp;
  
  for(int i=0;i<len-1;i++)//轮转次数
  {
    for(int j=i+1;j<len;j++)//从排序后的较小值得下一位置开始寻找
	{
	   if(arr[j]>arr[m])//若寻找的位置大于当前轮转前次记录的较小值
	   {
	      temp   = a[j];
		  arr[j] = arr[m];//替换原来较小值的位置,以与之更小的值取代之
		  arr[m] = temp;
	   }
	}
  }
}
版权声明:本文为weixin_43940932原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43940932/article/details/107854717

智能推荐

选择排序/冒泡排序?

再看另一个没有单独写出函数然后调用的,似乎前者更好理解:  ...

冒泡排序+选择排序

   冒泡排序和选择排序的核心是正好相反的。他们第一个for循环,比较的都是趟数,第二个for循环比较的都是和本趟中的数据进行比较。...

冒泡排序&选择排序

这是在学校上C语言ppt课件上讲到的,过程清晰很容易理解 假设存在一个int[] a 一、 冒泡排序过程 1、比较第一个数与第二个数,若a[0]>a[1],则交换;然后比较第二个数与第三个数;一次类推,直至第n-1个数和第n个数比较为止------第一趟冒泡排序,结果最大的数被安置在最后一个元素位置上。 2、对前n-1个数进行第二趟冒泡排序,结果使次大的数被安置在第n-1个元素位置。 3、重...

冒泡排序、选择排序

冒泡排序 冒泡排序原理:对于一个数组,相邻的两个元素进行对比,如果前一个元素比后一个元素大,就交换两个元素的位置。重复以上步骤,直到没有元素可以对比 代码实现: 选择排序 原理:用一个索引位置上的元素依次与其他所以上的元素进行比较,较小的在前,大的在后。 代码实现:...

冒泡排序,选择排序

冒泡排序 在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。 即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。 选择排序 选择排序和冒泡排序类似,跟冒泡不同之处在于,它不是每比较一次就调换位置, 而是一轮比较完毕,找到最大值(或者最小值)之后,将其放在正确的位置, 其他数的位置不变...

猜你喜欢

冒泡排序,选择排序

冒泡排序,选择排序 冒泡排序 基本思想: 从数组的头部开始,比较相邻两个数,如果第1个数比第2个数大,就交换他们两个。也就是让较大的数逐渐往后 移动,直到数组的末尾,经过第一轮的比较,就可以找到最大的元素,并将它移动到最后一个位置。 第一轮结束后,继续第二轮,仍然从数组的头部开始比较,直到数组的倒数第2个元素为止,经过第2轮比较,就可以找到次大的元素,并将它放到倒数第二个位置。 一次类推,经过n-...

冒泡排序、选择排序

冒泡排序 #选择排序...

冒泡排序&选择排序

冒泡排序是当前的值和下一个值比较,如果当前值大于下一个值,就调换两者的位置。每次调用的时候都会确定一个最大值放在最后,就像是在一个一个的泡按照顺序往上冒。 所以内部的循环是 但是一共有a.length个泡泡要冒 所以上面的循环至少要执行a.length次,当然最后一次就只有一个泡泡了 所以还需要嵌套一层for循环,他的作用是控制n是哪一个泡     而选择排序就是一个元素和当前...

冒泡排序&选择排序

冒泡排序 测试例子:5 2 1 6 4 7 9 0 8 3 思路: 冒泡排序通过从开始位置的元素两两比较后面的元素,找到最大值,放到数组的最后面。每次找到最大值,就将数组大小减1 比较的两个数,如果前面的数比后面的数据大,就交换两个数,如果前面的数比较小,就不交换两个数。 (比较的思路容易和选择排序混淆) 时间复杂度: 平均:O(n^2) 每遍历一次数组,只能确定一个数的正确位置,因此n个元素,一...

Uint8Array 拷贝操作的坑(buffer)

Uint8Array 声明 比如说,我们想将其中的16,17,0,0拿出来组成一个新的uint8array,那有什么简单的办法,首先看官方api uint8array 有一个方法 subarray 方法 (Uint8Array) 为此数组获取 ArrayBuffer 存储的新 Uint8Array 视图。 看下面代码 这样大家以为这就是一个新的uint8array数组了,是自己想要的东西 但是看下...