冒泡排序

运用python实现冒泡排序算法

依然范特西╮ 提交于 2019-12-06 03:22:57
冒泡排序,一个经典的排序算法,因在算法运行中,极值会像水底的气泡一样逐渐冒出来,因此而得名。 冒泡排序的过程是比较两个相邻元素的大小,然后根据大小交换位置,这样从列表左端开始冒泡,最后最大值会依次从右端冒出。 python实现冒泡排序: def bubble_sort(nums): for i in range(len(nums) - 1): 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实现冒泡排序的核心思想是通过从列表一端迭代循环元素,再通过一个循环让这个元素之后的元素相邻两个比较,从而依次将最大值移动到最末端,如下图示意。 本想放gif图的,放不上有点问题。 关于冒泡排序的时间复杂度,在上面python实现的代码中时间复杂度是 n的平方 ,当然可以再考虑一下极端的情况:当队列已经从小到大排好序或者从大到小排好序,从小到大排好顺序时可以只扫描一遍就结束排序,此时时间复杂度为O(n),如果是从大到小,那么就需要扫描n-1次,同时需要比较交换n-1次,时间复杂度为n的平方 。 来源: https://www.cnblogs.com/pypypy/p/11960134.html

冒泡排序

纵饮孤独 提交于 2019-12-06 00:21:50
冒泡排序 1.冒泡排序思想 让数组当中相邻的两个数进行比较,数组当中比较小的数值向下沉,数值比较大的向上浮!外层for循环控制循环次数,内层for循环控制相邻的两个元素进行比较。 2. 编码 #include<stdio.h> int main() { int a[100],i,j,n,t; printf("请输入排序个数:"); scanf("%d",&n); printf("\n请依次输入需排序的数字(以空格隔开):"); for(i=1;i<=n;i++) { scanf("%d",&a[i]); } ////////冒泡排序的核心部分/////////////////// for(i=1;i<=n-1;i++)//n个数排序,只用进行n-1趟 { for(j=1;j<=n-i;j++)//从第一位开始比较到最后一个尚未归为的数,执行n-i趟 { if(a[j]<a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } //////////////////////////////////////////// printf("从大到小的顺序排序:"); for(i=1;i<=n;i++) { printf("%d ",a[i]); } printf("\n"); getchar(); } 3. 示例 来源: https://www

java_冒泡排序

隐身守侯 提交于 2019-12-05 20:24:09
public static void main(String[] args){   int[] arr= {321, 43, 45, 76, 8, 6, 9, 1, 3, 63, 43};   for(int i=0;i<arr.length-1;i++){    for(int j=0;j<arr.length-1-i;j++){      int temp = arr[j];       if(arr[j]>arr[j+1]){        arr[j] = arr[j+1];        temp = arr[j];        arr[j+1] = temp;       }       }   }   for(int i=0;i<arr.length;i++){   System.out.print(arr[i]+" ");   } } 来源: https://www.cnblogs.com/a276665092/p/11945230.html

模板

本小妞迷上赌 提交于 2019-12-05 19:07:57
1.冒泡排序 代码: void Sort(int* arr,int nLength) { int i; int k; for(i=0;i<nLength-1;i++) { for(k=0;k<nLength-1-i;k++) { if(arr[k]>arr[k+1]) { int temp = arr[k]; arr[k] = arr[k+1]; arr[k+1] = temp; } } } } 最简单的排序,不多做说明; 有个缺点: 需要排序的可能还有其它类型,比如double、float、short、结构、类等,不限于int; 这样导致需要给每一种类型都写一个相同的排序方法; 2.折半查找 代码: int Find(int* arr,int nLength,int nElement) { int nBegin = 0,nEnd = nLength-1,nIndex; while(nBegin<=nEnd) { nIndex = (nBegin+nEnd)/2;//(nBegin+nEnd)>>1 if(nElement > arr[nIndex]) { nBegin = nIndex+1; } else if(nElement < arr[nIndex]) { nEnd = nIndex-1; } else { return nIndex; } } return -1; }

PTA 冒泡排序

╄→гoц情女王★ 提交于 2019-12-05 15:04:17
6-4 冒泡排序 (10 分) 编程实现冒泡排序函数。void bubbleSort(int arr[], int n);。其中arr存放待排序的数据,n为数组长度(1≤n≤1000)。 函数接口定义如下: /* 对长度为n的数组arr执行冒泡排序 */ void bubbleSort(int arr[], int n); 请实现bubbleSort函数,使排序后的数据从小到大排列。 裁判测试程序样例: #include <stdio.h> #define N 1000 int arr[N]; /* 对长度为n的数组arr执行冒泡排序 */ void bubbleSort(int arr[], int n); /* 打印长度为n的数组arr */ void printArray(int arr[], int n); void swap(int *xp, int *yp) { int temp = *xp; *xp = *yp; *yp = temp; } int main() { int n, i; scanf("%d", &n); for (i = 0; i < n; ++i) { scanf("%d", &arr[i]); } bubbleSort(arr, n); printArray(arr, n); return 0; } /* 打印长度为n的数组arr */ void

JS-冒泡排序

£可爱£侵袭症+ 提交于 2019-12-05 12:10:17
冒泡排序 冒泡排序的原理如下,从第一个元素开始,把当前元素和下一个索引元素进行比较。如果当前元素大,那么就交换位置,重复操作直到比较到最后一个元素,那么此时最后一个元素就是该数组中最大的数。下一轮重复以上操作,但是此时最后一个元素已经是最大数了,所以不需要再比较最后一个元素,只需要比较到 length - 2 的位置。 以下是实现该算法的代码 // 冒泡排序 export default (arr) => { for (var i = arr.length - 1, tem; i > 0; i--) { for (var j = 0; j < i; j++) { tem = arr[j] if (tem > arr[j + 1]) { arr[j] = arr[j + 1] arr[j + 1] = tem } } } return arr } 测试用例 import sort from '../../code/sort/lesson1-1' test('冒泡排序', () => { expect(sort([1, 9, 5, 3, 4])).toEqual([1, 3, 4, 5, 9]) }) 来源: https://www.cnblogs.com/nayek/p/11924097.html

C语言实现冒泡排序

余生长醉 提交于 2019-12-05 09:22:44
#include<stdio.h> int main(){ int i,j,temp,a[10]; printf("please input 10 numbers:"); for(i=0;i<10;i++) { scanf("%d",&a[i]); } printf("\n"); for(i=0;i<9;i++) for(j=0;j<9-i;j++) { if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } printf("the sorted numbers:\n"); for(j=0;j<10;j++) { printf("%d ",a[j]); } printf("\n"); return 0; } 来源: https://www.cnblogs.com/hanweiyan/p/11918842.html

经典排序算法

随声附和 提交于 2019-12-05 08:34:10
  排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。常见的内部排序算法有:插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。用一张图概括: 关于时间复杂度: 平方阶 (O(n2)) 排序 各类简单排序:直接插入、直接选择和冒泡排序。 线性对数阶 (O(nlog2n)) 排序 快速排序、堆排序和归并排序。 O(n1+§)) 排序,§ 是介于 0 和 1 之间的常数。 希尔排序。 线性阶 (O(n)) 排序 基数排序,此外还有桶、箱排序。 关于稳定性: 稳定的排序算法:冒泡排序、插入排序、归并排序和基数排序。 不是稳定的排序算法:选择排序、快速排序、希尔排序、堆排序。 名词解释: n:数据规模 k:“桶”的个数 In-place:占用常数内存,不占用额外内存 Out-place:占用额外内存 稳定性:排序后 2 个相等键值的顺序和排序之前它们的顺序相同 冒泡排序   冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

冒泡排序

依然范特西╮ 提交于 2019-12-05 05:22:24
算法1:冒泡排序   java代码: 1 /** 2 * 冒泡排序 3 * @author snail 4 */ 5 public class MaoPao_Sort { 6 public static void main(String[] args) { 7 //定义数组 8 int [] arr = new int[]{10,2,17,5,9,1,20,22,48,11,0}; 9 10 //外层循坏 循环次数为数组长度 每循环一次 比较出一个最大值 11 for(int i = 0;i<arr.length;i++){ 12 //定义临时变量 13 int temp; 14 //内层排序 比较大小 每次比较个数比上次少一个 15 for(int j = 0;j<arr.length-1-i;j++){ 16 if (arr[j]>arr[j+1]) { 17 temp = arr[j]; 18 arr[j] = arr[j+1]; 19 arr[j+1]=temp; 20 temp=0; 21 } 22 } 23 } 24 for (int i : arr) { 25 System.out.println(i); 26 } 27 } 28 } python代码: 1 # -*- coding: UTF-8 -*- 2 # 冒泡排序 3 def maopao_sort(arr)

(二十七)golang-排序和查找

老子叫甜甜 提交于 2019-12-05 04:58:11
排序:将一组数据,依据指定的顺序进行排列 (1)内部排序:将数据加载在内存中进行排序; 交换排序(冒泡排序,快速排序) 冒泡排序实现: 快速排序实现 (2)外部排序:数据量过大,无法全部加载到内存中,需要借助外部存储 来源: https://www.cnblogs.com/xiximayou/p/11908084.html