冒泡排序

冒泡排序,前面几个没有排序

独自空忆成欢 提交于 2019-12-01 15:53:16
1 #include "stdafx.h" 2 #include <iostream> 3 using namespace std; 4 template<typename T> 5 //整数或浮点数皆可使用 6 void bubble_sort(T arr[], int len,int index=0) 7 { 8 int i, j; T temp; 9 for (i = 0; i < len - 1; i++) 10 for (j = index; j < len - 1 - i; j++) 11 if (arr[j] < arr[j + 1]) 12 { 13 temp = arr[j]; 14 arr[j] = arr[j + 1]; 15 arr[j + 1] = temp; 16 } 17 } 18 int main() 19 { 20 int arr[] = { 61, 17, 29, 22, 34, 60, 72, 21, 50, 1, 62 }; 21 int len = (int) sizeof(arr) / sizeof(*arr); 22 bubble_sort(arr, len); 23 for (int i = 0; i < len; i++) 24 cout << arr[i] << ' '; 25 26 cout << endl; 27 28

冒泡排序,插入排序,选择排序

感情迁移 提交于 2019-12-01 15:51:00
""" 遍历数组 交换旗帜变量 = 假 (False) 从 i = 1 到 最后一个没有排序过元素的指数 如果 左边元素 > 右边元素 交换(左边元素,右边元素) 交换旗帜变量 = 真(True) """ def bubble_sort(arr): for i in range(len(arr)): flag = False for j in range(len(arr)-i-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] flag = True # 如果没有数据交换则表示已经有序,退出循环 if not flag: break return arr """ 将第一个元素标记为已排序 遍历每个没有排序过的元素 “提取” 元素 X i = 最后排序过元素的指数 到 0 的遍历 如果现在排序过的元素 > 提取的元素 将排序过的元素向右移一格 否则:break 插入提取的元素 """ def insert_sort(arr): if len(arr) <= 1: return arr # 遍历每个未排序元素 for i in range(1, len(arr)): val = arr[i] j = i - 1 while j >= 0: if arr[j] > val: arr[j + 1] = arr[j]

Java——排序

那年仲夏 提交于 2019-12-01 15:45:10
关于排序我想大家都不陌生,所谓排序就是将输入的数字按照从小到大的顺序进行排列。当然排序也是多种多样的,接下来我们来一次看看各种排序: 冒泡排序 选择排序 快速排序 插入排序(挖坑) 堆排序(挖坑) 归并排序(挖坑) ============================================================================ 冒泡排序 首先我们从冒泡排序开始说吧(取自于算法动画图解) 先以这9个数为基础,从序列右边开始比较相邻两个数字的大小,这里就是比较7和6的大小,因为7>6,所以他们交换位置。结果如下图: 之后,天平向前移动,开始比较4和6,因为4<6,所以位置不变;天平在往前移,开始比较4和8,因为8>4,所以交换位置...........以此类推直到第一轮循环结束; 通过第一轮循环,把最小值排到了第一位,之后第二轮循环开始,天平重新从序列右边开始; 重复上述的过程...... 不难看出第一轮需要比较n-1次,第二轮需要比较n-2次.........第n-1轮需要比较1次。因此,比较次数为(n-1)+(n-2)+......+1约为n^2/2。 时间复杂度为n^2; 代码实现如下: public static void main(String[] args) { Scanner scanner = new Scanner(System

Java排序算法之冒泡排序

北战南征 提交于 2019-12-01 15:36:24
java 冒泡排序算法 1. 基本思想: 对比相邻的元素值,如果满足条件就交换元素值,把较小的元素移动到数组的前面(从小到大排序),把大的元素移动到数组的后面,即交换两个元素的位置,这样较小的元素就像气泡一样从底部上升到顶部。 2. 算法实现: 冒泡算法由双层循环实现,其中外层循环用于控制排序轮数,一般为要排序的数组长度减 1 ,因为最后一次循环只剩下一个数组元素,不需要对比,同时已经完成排序了。内层循环主要是用于对比数组中每个邻近元素的大小,以确定是否交换位置,对比和交换的次数随排序轮数而减少。 3. 代码 public class maopaopaixu { public static void main(String[] args) { // TODO Auto-generated method stub Scanner input=new Scanner(System.in); int[] array= {10,9,8,7,6,5,4,3,2,1}; System.out.println(" 排序前数组为: "); for(int i=0;i<array.length;i++) System.out.print(array[i]+" "); System.out.println(); BubbleSort(array); System.out.println("

调用冒泡排序函数对字符串进行排序

自古美人都是妖i 提交于 2019-12-01 10:24:05
1 #include <stdio.h> 2 #include <string.h> 3 4 bubble(strings, count) 5 char *strings; 6 int count; 7 { 8 register int m, n; 9 register char s; 10 for (m = 1; m<count; m++) 11 for (n = count - 1; n >= m; --n) 12 { 13 if (strings[n - 1]>strings[n]) 14 { 15 s = strings[n - 1]; 16 strings[n - 1] = strings[n]; 17 strings[n] = s; 18 } 19 } 20 } 21 22 int main() 23 { 24 int count; 25 char str[200]; 26 printf("请输入字符串:\n"); 27 gets(str); 28 count = strlen(str); 29 bubble(str, count); 30 printf("排序之后的字符串是:\n"); 31 printf("%s.\n", str); 32 33 return 0; 34 } 来源: https://www.cnblogs.com/liugangjiayou/p

排序算法(C++)

梦想的初衷 提交于 2019-12-01 10:10:11
冒泡排序、选择排序、快速排序、插入排序、希尔排序、归并排序、基数排序、堆排序。 推荐网址1: https://www.cnblogs.com/onepixel/articles/7674659.html 推荐网址2(C++): https://blog.csdn.net/opooc/article/details/80994353 推荐网址3: https://www.cnblogs.com/hokky/p/8529042.html 推荐网址4: https://blog.csdn.net/real_lisa/article/details/82685407 一、冒泡排序 来源: https://www.cnblogs.com/ken9527just/p/11479281.html

python冒泡排序实现

霸气de小男生 提交于 2019-12-01 07:58:04
代码:list=[3,51,4,8,0,2,47]n=len(list)for i in range(0,n-1): for j in range(0,n-1-i): if list[j]>list[j+1]: arry=list[j+1] list[j+1]=list[j] list[j]=arryprint(list)结果:[0, 2, 3, 4, 8, 47, 51]代码: from random import randrange, shuffle def Bubblesort(): array=[] while len(array)<12: array.append(randrange(-99,101,3)) shuffle(array) print("排序前的数组:{}".format(array)) for i in range(12): for j in range(0,12-1-i): if array[j]>array[j+1]: buf=array[j+1] array[j+1]=array[j] array[j]=buf print("排序后的数组:{}".format(array))Bubblesort()结果: 排序前的数组:[-54, 0, -24, -24, -18, 33, 90, -36, 93, 21, -90, -48] 排序后的数组:[-90

【初赛】

荒凉一梦 提交于 2019-12-01 07:48:27
计算机? 1944年,美籍匈牙利数学家 冯 诺依曼 提出计算机基本结构和工作方式的设想 为计算机的诞生和发展提供了理论基础 微型机主要技术指标: 字长:一直计算机能够直接处理的二进制数据的基础位数 单位为位(BIT) 主频:计算机主时钟在一秒内发出的脉冲数 很大程度上决定了计算机的运算速度 内存容量:表示计算机处理信息能力强弱的一项技术指标 单位为字节(BYTE 外存容量:一般指软盘、硬盘、光盘 计算机的特点:运算速度快 运算精度高 有记忆能力 逻辑判断能力 自动控制能力 计算机硬件由五大部分组成:运算器、控制器、存储器、输入设备、输出设备 中央处理器(CPU):由 运算器、控制器和一些寄存器 组成 ​ 运算器 进行各种 算术运算和逻辑运算 ; 控制器 是计算机的指挥系统 CPU的主要性能指标是主频和字长 存储器: ​ 内部存储器:中央处理器能直接访问的存储器称为 内部存储器 ,包括 快速缓冲存储器和主存储器 ;中央处理器不能直接访问的存储器称为 外部存储器 ,外部存储器中的信息必须调入内存后才能为中央处理器处理。 ​ 主存储器 :内存也常泛称主存,但严格上说,只有当内存中只有主存,而没有快速缓冲存储器时,才能称为主存。主存储器按读写功能,可分只读 存储器(ROM) 和随机存储器 (RAM) 两种。 ​ 外部存储器: ​ 外存储器:也称辅助存储器,一般容量较大,速度比主存较慢 ​