冒泡排序

模拟qsort实现冒泡排序

匿名 (未验证) 提交于 2019-12-02 23:36:01
1.数组指针 数组指针是指针,指针指向数组,其内部保存的是数组的地址,只要是指针,就占4个字节。 比如: int arr[5]; //数组 int *parr1[10]; //指针数组 int (*parr2)[10];//数组指针 int (*parr3[10])[5]; //数组指针数组 解释:命名规则按照操作符的优先级来决定。 2.函数指针和定义 定义:函数指针是指向函数的指针变量。 用途:调用函数和做函数的参数 声明方法:返回值类型(*指针变量名)([形参列表]) 比如: #include <stdio.h> void test() { printf("hehe\n"); } int main() { printf("%p\n", test); printf("%p\n", &test); return 0; } 运行结果: 输出的是两个地址,这两个地址是 test 函数的地址。 那我们的函数的地址要想保存起来,怎么保存? 下面我们看代 码: void test() { printf("hehe\n"); } //下面pfun1和pfun2哪个有能力存放test函数的地址? void (*pfun1)(); void *pfun2(); 首先,能给存储地址,就要求pfun1或者pfun2是指针,那么答案就是:pfun1可以存放。pfun1先和*结合,说明pfun1是指针

js冒泡排序

匿名 (未验证) 提交于 2019-12-02 23:34:01
/** * 冒泡排序 */ function bubble(arr){ let length = arr.length; for(let i = 0; i < length-1; i++ ){ let flag = false; for(let j = 0;j < length-i-1; j++ ){ if(arr[j] > arr[j+1]){ [arr[j+1],arr[j]] = [arr[j],arr[j+1]]; flag = true; } } if(!flag){ return arr; } console.log(`第${i+1}次`,arr) } return arr; } let arr = [1,3,2,55,21,14,23,4]; let res = bubble(arr); console.log("最终结果:",res); 第1次 [ 1, 2, 3, 21, 14, 23, 4, 55 ] 第2次 [ 1, 2, 3, 14, 21, 4, 23, 55 ] 第3次 [ 1, 2, 3, 14, 4, 21, 23, 55 ] 第4次 [ 1, 2, 3, 4, 14, 21, 23, 55 ] 最终结果: [ 1, 2, 3, 4, 14, 21, 23, 55 ] 将序列当中的左右元素,依次比较,保证右边的元素始终大于左边的元素;( 第一轮结束后

C#冒泡排序与快速排序比较

匿名 (未验证) 提交于 2019-12-02 23:34:01
首先排序分为四种: 那么今天我们讲的就是交换排序,我们都知道,C#类库提供的排序是快排,为了让今天玩的有意思点, 冒泡排序: 首先我们自己来设计一下“冒泡排序”,这种排序很现实的例子就是: 关于冒泡的思想,我不会说那么官方的理论,也不会贴那些文字上来,我的思想就是看图说话。 那么我们就上图. 要达到冒泡的效果,我们就要把一组数字竖起来看,大家想想,如何冒泡?如何来体会重的沉底,轻的上浮? 第三步:拿交换后的20跟10比,发现自己是老大,不用交换。 第四步:拿10跟50交换,发现50是老大,进行交换。 现在大家思想都知道了,下面我们就强烈要求跟快排较量一下,不是你死就是我活。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Diagnostics; using System.Threading; namespace BubbleSort { public class Program { static void Main(string[] args) { //五次比较 for (int i = 1; i <= 5; i++) { List<int> list = new List<int>(); //插入2k个随机数到数组中 for

【C++--02】冒泡排序~~~

匿名 (未验证) 提交于 2019-12-02 23:32:01
Ŀ¼ 冒泡排序是什么: 举例说明:降序 代码示例: 运行结果: 冒泡排序是什么: 冒泡排序分 降序 和 升序 两种排序方式。 它们的唯一区别就是两个数交换的条件不同,降序排序是前面的数比后面的小的时候交换; 而升序排序是前面的数比后面的数大的时候交换。 如果该次循环没有发生一次数的交换,就说明数组已经排好序了,则停止循环 。 举例说明:降序 相邻数字比较大小进行交换,数值小的后移 列表表述: 待排数组 2 4 1 8 5 3 9 第一次排序 4 2 8 5 3 9 1 第二次排序 4 8 5 3 9 2 1 第三次排序 8 5 4 9 3 2 1 第四次排序 8 5 9 4 3 2 1 第五次排序 8 9 5 4 3 2 1 第六次排序 9 8 5 4 3 2 1 代码示例: #include <stdlib.h> #include <iostream> using namespace std ; int main (){ const int n = 11 ; int i , j , t ; int a [ n ]; cout << "请输入10个整数:" << endl ; for ( i = 1 ; i < n ; i ++){ cin >> a [ i ]; } for ( j = 1 ; j < n - 1 ; j ++){ for ( i = 1 ; i < n - j

一维数组的冒泡排序和删除与插入

匿名 (未验证) 提交于 2019-12-02 23:04:29
冒泡排序 16 25 9 90 23 降序排列 ―从大到小 冒泡排序的基础 原理: 遍历 和 交换 第一轮循环: 某个数字小于后面的数字,那么就交换 1 25 16 9 90 23 2 25 16 9 90 23 3 25 16 90 9 23 4 25 16 90 23 9 最小的数字就冒到了最后 1、需要比较多轮: (数组长度一1)轮 2、每一轮比较的次数比上一轮-1次 (数组长度一1)-当前的轮数 #include <stdio.h> # define N 5 //宏定义,方便更改 int main() { /* 16 25 9 90 23 降序排列 ―从大到小 冒泡排序的基础原理: 遍历和交换 第一轮循环: 某个数字小于后面的数字,那么就交换 1 25 16 9 90 23 2 25 16 9 90 23 3 25 16 90 9 23 4 25 16 90 23 9 最小的数字就冒到了最后 1、需要比较多轮: (数组长度一1)轮 2、每一轮比较的次数比上一轮-1次 (数组长度一1)-当前的轮数 */ int i,j;//循环变量 int temp;//用于交换的临时变量 int nums[N] = {16, 25, 9, 90, 23}; //外层循环控制轮数 for(i = 0;i < N-1;i++) { //内层循环控制每次比较的次数 for(j = 0;j < N

2018.5.18第十节课-Python

匿名 (未验证) 提交于 2019-12-02 22:51:30
函数: 运行结果: #冒泡排序 是可以调换位置 运行结果:应该是 2 3 经过排序调换位置 变成 3 2 #冒泡排序 从一个没有规律的列表中 按照从小到大――――――――――――――――― 运行结果 迭代器----自定义一个迭代器 运行结果: 转载请标明出处: 2018.5.18第十节课-Python 文章来源: 2018.5.18第十节课-Python

Python冒泡排序算法及其优化

匿名 (未验证) 提交于 2019-12-02 22:51:30
冒泡排序 所谓冒泡,就是将元素两两之间进行比较,谁大就往后移动,直到将最大的元素排到最后面,接着再循环一趟,从头开始进行两两比较,而上一趟已经排好的那个元素就不用进行比较了。(图中排好序的元素标记为黄色柱子) 冒泡排序动图演示 上python代码: 1 def bubble_sort ( items ): 2 for i in range ( len ( items ) - 1 ): 3 for j in range ( len ( items ) - 1 - i ): 4 if items [ j ] > items [ j + 1 ]: 5 items [ j ], items [ j + 1 ] = items [ j + 1 ], items [ j ] 6 return items 7 8 9 list1 = [ 2 , 1 , 9 , 11 , 10 , 8 , 7 ] 10 print ( bubble_sort ( list1 )) 输出结果: 1 [ 1 , 2 , 7 , 8 , 9 , 10 , 11 ] 这是冒泡排序最普通的写法,但你会发现它有一些不足之处,比如列表:[1,2,3,4,7,5,6],第一次循环将最大的数排到最后,此时列表已经都排好序了,就是不用再进行第二次、第三次... 冒泡排序优化一: 设定一个变量为False,如果元素之间交换了位置

Python : 冒泡排序

匿名 (未验证) 提交于 2019-12-02 22:51:08
class Solution: def bubbleSort(nums): # 这个循环负责设置冒泡排序进行的次数 for i in range(len(nums)-1): # j为列表下标 for j in range(len(nums)-i-1): if nums[j] > nums[j+1]: nums[j], nums[j+1] = nums[j+1], nums[j] return nums 转载请标明出处: Python : 冒泡排序 文章来源: https://blog.csdn.net/weixin_44523387/article/details/91314182

C#冒泡排序程序

匿名 (未验证) 提交于 2019-12-02 22:06:11
考虑到很多面试可能会考察冒泡排序的用法,所以特地花时间厘清了一下思路。下面说一下我的思路: 冒泡排序核心就是比较方法,冒泡排序的比较方法顾名思义就是像气泡一样,最大(或者最小)的数往上冒。 普通比较几个数,我们可以用if(a>b)然后c=a;b=a 。。。。这类方法,把大数暂存到c中,然后小的数存到 原本的比较小的数继续跟其他数比较。冒泡排序也是如此,不过冒泡排序比较的数据比较多,需要用到for循环, 一个数比较完,比较下一个,一直循环到最后一个,先找出最大的数,然后再找第二大的,以此类推。 实现程序如下: 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace BubbleUpSort 11 { 12 public partial class Frm_Main : Form 13 { 14 public Frm_Main() 15 { 16 InitializeComponent(); 17 } 18 19

冒泡排序--JavaScript描述

匿名 (未验证) 提交于 2019-12-02 21:53:52
  相信凡是编程入门的都接触过冒泡排序算法,排序算法在编程中经常用到。 1. code 1 /** 2 * 冒泡排序 3 * 1、比较的轮数等于总数 - 1 4 * 2、比较次数等于要比较的个数 - 1 5 * --比较从第一个到最后一个 6 * --每一轮比较完得到一个最终值、不参与下一次比较 7 * 8 * */ 9 10 /** 11 * 最大时间复杂度 O(n^2) 12 * 空间复杂度 O(1) 13 * */ 14 var arr = [10, 0, 100, 20, 60, 30]; 15 var temp; 16 /** 17 * 从大到小 18 * **/ 19 /* 控制循环比较的轮数 */ 20 for (var i = 0; i < arr.length - 1; i++) { 21 /* 控制每一轮比较的次数 */ 22 for (var j = 0; j < arr.length - 1 - i; j++) { 23 if(arr[j] < arr[j + 1]){ 24 temp = arr[j]; 25 arr[j] = arr[j + 1]; 26 arr[j + 1] = temp; 27 } 28 } 29 } 30 // alert(arr); 31 console.log("从小到大 :" + arr); 32 /** 33 * 从小到大