冒泡与选择算法区别

1.冒泡

冒泡就是 1   2  3   4  5 6 7 8 9

2  1   3   4  5  6  7  8   9

2   3   1  4  5   6  7  8  9

2    3   4   1  5  6  7  8 9

2     3     4  5   1   6  7  8  9

。。。。。。。。。

2    3  4  5  6 7  8  9   1

这是第一次循环  如此循环9次  就变成

9  8  7  6  5  4  3  2   1

代码如下  这里是降序,要是想升序只需要把if( a[j] <a[j+1])改成if( a[j] >a[j+1])

for( int i =0 ; i《10; i++)

for( int j = 0; j < 10 - i -1; j ++){

if( a[j] <a[j+1])

{

int s=a[j] + a[j+1];

a[j] = s - a[j];

a[j+1] = s - a[j];

}

}

2.选择排序

1  2  3 4 5

2  1  3  4  5

3  1   2  4  5

4    1  2  3  5

5     1  2  3   4

这是拿第一个与后面的 都比较一次,每当不符合条件时候就交换数值。

代码

这里是升序,要是想降序只需要 把if(a[i] >a[j]) 改成if(a[i] <a[j])

for( int i =0 ; i《10; i++)//这里是 10 是 数组的个数

for( int j = 0; j < 10  ; j ++){//10 数组的个数

if( a[i] >a[j])

{

int s=a[i] + a[j];

a[i] = s - a[j];

a[j] = s - a[i];

}

}

冒泡与选择算法区别,布布扣,bubuko.com

时间: 2024-12-29 21:07:41

冒泡与选择算法区别的相关文章

python排序算法实现(冒泡、选择、插入)

python排序算法实现(冒泡.选择.插入) python 从小到大排序 1.冒泡排序: O(n2) s=[3,4,2,5,1,9] #count = 0 for i in range(len(s)): for j in range((i+1),len(s)): s[i],s[j]=min(s[i],s[j]),max(s[i],s[j]) #print count print s 2.选择排序: O(n2) s=[3,4,2,5,1,9] #count = 0 for i in range(l

常见排序算法(冒泡、选择、插入、快速、归并C++实现)

常见排序算法(冒泡.选择.插入.快速.归并C++实现) #include <iostream> using namespace std; // 冒泡排序 void bubbleSort (int data[], size_t size) { for (size_t i = 0; i < size - 1; ++i) { bool ordered = true; for (size_t j = 0; j < size - 1 - i; ++j) if (data[j+1] <

排序算法(三)冒泡、选择排序的Python实现及算法优化详解

说在前面 最近一年太忙,博客长草了.近日用Python实现了常用排序算法,供大家参考. Java版本排序算法及优化,请看以前的文章. <排序算法之简单排序(冒泡.选择.插入)> <排序算法(二)堆排序> 1.排序概念 这里不再赘述,请参看前面2篇文章 2.简单排序之冒泡法Python实现及优化 原理图 2.1.基本实现 num_list = [     [1, 9, 8, 5, 6, 7, 4, 3, 2],     [1, 2, 3, 4, 5, 6, 7, 8, 9] ] nu

Java数据结构和算法(三)——冒泡、选择、插入排序算法

上一篇博客我们实现的数组结构是无序的,也就是纯粹按照插入顺序进行排列,那么如何进行元素排序,本篇博客我们介绍几种简单的排序算法. 1.冒泡排序 这个名词的由来很好理解,一般河水中的冒泡,水底刚冒出来的时候是比较小的,随着慢慢向水面浮起会逐渐增大,这物理规律我不作过多解释,大家只需要了解即可. 冒泡算法的运作规律如下: ①.比较相邻的元素.如果第一个比第二个大,就交换他们两个. ②.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.这步做完后,最后的元素会是最大的数(也就是第一波冒泡完成

三个基本排序算法的效率比较(冒泡,选择和插入)

1.冒泡算法. 冒泡算法是最基础的一个排序算法,每次使用第一个值和身后相邻的值进行比较,如果是升序将大数向左边交换,降序则向右边交换.最终将大数移动到一边,最终排成一个序列: public class Sorting { public void BubbleSorting() { int[] arr = new int[10]; Random rd = new Random(100); for (int i = 0; i < arr.Length; i++) { arr[i] = rd.Next

排序算法-(冒泡、选择、插入算法)

运行效率较慢的三大排序算法:冒泡.选择与插入算法,时间复杂度都为O(n2),运行效率较慢. #python 代码实现如下所示: li=[2,1,4,5,7,8,9,5,3]#冒泡算法(升序算法)O(n2)import randomfrom cal_time import *@cal_timedef bubble_sort(li): for i in range(len(li)-1): #第i趟 exchange=False for j in range(len(li)-i-1): #无序区域为n

基础排序算法—冒泡,插入,选择

前言 冒泡,插入,选择这三种基础的排序算法,比较简单效率不高,工作中一般不会使用,但是当做算法来研究还是能了解一些知识的,本文以<数据结构与算法之美>为基础,详细解析一下. 正文 首先要引入几个概念 稳定性 如果待排序数组中有相同的元素,排序过后它们的相对顺序不发生变化. 比如 2,9,3,4,8,3 排序过后为2, 3 , 3, 4, 8, 9 这两个3的相对顺序不变.这样就是具有稳定性. 稳定性可以保证复杂数据结构排序时的相对有序性. 比如我们要对一笔订单先按金额排列,金额相同的再按时间排

Java实现数组的冒泡,选择,插入排序

[笔记]冒泡,选择,插入三者的排序算法时间复杂度均是O(N2)级,排序主要是执行比较和交换(复制)操作,相对来说:选择排序较冒泡排序减少了交换次数:而插入排序左边是一直保持有序的.[参考书籍]Java数据结构与算法 以下是源代码,针对数组的操作,存取元素为基本类型: 1 import java.util.Random; 2 3 class HighArray{ 4 private long[] array; 5 private int nElems,i_mark; 6 public HighAr

冒泡排序和选择排序区别

/*冒泡排序:每一次循环数值较小的的就能像气泡一样慢慢浮现出来  * 两层循环,第一层循环控制循环的次数, 第二层拿数组中的第二个数进行和第一层循环中的数进行比较, * */        int[] nums = { 29, 13, 23, 10, 72, 41, 21, 77 };        int temp = 0;        for (int i = 0; i < nums.length - 1; i++) {            for (int j = i + 1; j <