冒泡排序

JS冒泡排序

十年热恋 提交于 2019-12-03 07:31:18
1 //冒泡排序 从大到小 2 function sort(arr){ 3 // 一共几个数就循环几回 4 for(var i = 0; i < arr.length; i++){ 5 // 一回要比较多少次 6 for(var j = 0; j < arr.length - i; j++){ 7 if(arr[j] < arr[j+1]){ 8 var temp; //声明一个临时变量帮助交换两个数 9 temp = arr[j]; 10 arr[j] = arr[j+1]; 11 arr[j+1] = temp; 12 } 13 } 14 } 15 return arr; 16 } 17 console.log(sort([12,36,4,8,2,0,45])); 来源: https://www.cnblogs.com/sunyan-blog/p/11783243.html

python基础--冒泡排序

佐手、 提交于 2019-12-03 07:25:50
1.冒泡排序   1.首先用一张图来形象描述一下冒泡排序:        2.废话不多说,直接上代码 1 # 1.导入随机模块 2 import random 3 4 # 2.定义一个列表,列表内的元素为20个100以内的随机整数 5 list2 = list(random.choices([x for x in range(0,100)], k=20)) 6 print(list2) 7 8 # 3.定义函数:冒泡排序 9 def bubble(lst): 10 for i in range(len(lst)-1): 11 for j in range(len(lst)-i-1): 12 if lst[j] > lst[j+1]: 13 lst[j], lst[j+1] = lst[j+1],lst[j] 14 return lst 15 16 # 4.打印排序后的列表 17 print(bubble(list2)) 来源: https://www.cnblogs.com/jeffrey04118110/p/11783036.html

数组的选择排序和冒泡排序

为君一笑 提交于 2019-12-03 06:32:12
选择排序的规则:将第一位数据和后面的所有的数据依次比较,找到最小值并放到第一位 function arr ( myarr ){ for ( var i = 0 ; i < myarr . length - 1 ; i ++){ 确定比较的行数 var min = s [ i ];                     用来假设第一位是最小的 var minwz = i ;                     保存最小值所在的位置 for ( var j = i + 1 ; j < myarr . length ; j ++){        确定比较的次数 if ( min > s [ j ] ){                  比较,判断刚才的假设是否正确,不正确 min = s [ j ];                    保存真的最小值 minwz = j ; } } s [ minwz ]= s [ i ];                    先将第一位挪开,在将最小值放在第一位 s [ i ]= min } } var s =[ 12 , 34 , 57 , 23 , 11 ]; arr ( s ); console . log ( s ); 冒泡排序:两两比较,大的放后面 function fn ( myarr ){ for ( var i = 0

冒泡排序

天涯浪子 提交于 2019-12-03 03:57:12
下面我们用两种方法实现冒泡排序: var afterDelete = [11, 2, 6, 31, 5] 方法一: function range(arr) { for(var i=0;i<arr.length-1;i++){ //索引值是i的数字和排在它后面的所有数字依次比较一次 for (var j = i + 1;j < arr.length;j++){ if (arr[i] > arr[j]) { var temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } } } return arr } var rangeResult = range(afterDelete) console.log(rangeResult) // [2, 5, 6, 11, 31] 方法二: function quickSort(elements){ if(elements.length<=1){ return elements; } var index = Math.floor(elements.length/2); //console.log(index);//5->5->4->3->2->2->1 var pivot = elements.splice(index,1)[0];//获取删除的数字 //console.log("pivot="+pivot)

冒泡排序及优化

无人久伴 提交于 2019-12-03 02:24:32
相信冒泡排序已经被大家所熟知,今天看了一篇文章,大致是说在面试时end在了冒泡排序上,主要原因是不能给出冒泡排序的优化。 所以,今天就写一下python的冒泡排序算法,以及给出一个相应的优化。OK,前言结束,步入正题: 首先,大家来看一下原始的python实现的冒泡排序算法: def bubble_sort(nums): for i in range(len(nums) - 1): # 这个循环负责设置冒泡排序进行的次数(比如说n个数,则只要进行n-1次冒泡,就可以把这个n个数排序好,对吧) for j in range(len(nums) - i - 1): """这里这个j呢就是控制每一次具体的冒泡过程,请你想一想,我们第一次冒泡需要冒几次,也就是说需要比较几次,假如有三个数,那只需要两次就可以了,当下一次时,最后一个已经是有序的了,所以说少冒泡一次,所以这里j每次都会减去i的值,即不用冒“无用之泡泡”""" if nums[j] > nums[j + 1]: nums[j], nums[j + 1] = nums[j + 1], nums[j] return nums 盗用个图,动态展示一下冒泡排序过程: 好了,终于说完原始的泡泡算法了,不对,是冒泡算法,接下来大家想一想,原始的冒泡算法存在什么问题呢?(思考ing) 相信聪明的你已经发现,这里我就帮你们说一下好了:

冒泡排序的2种写法

匿名 (未验证) 提交于 2019-12-03 00:38:01
假如有几个数字int score[] = {67, 69, 75, 88}; 按照从大到小排序。 有2种思路,第一种,score[j] 和 score[j+1] 比较 如果 前者比后者小,把前者和后者调换顺序,两两调换后一轮下来 最小的会被排到最后去。每一轮j都从0开始,当i轮排序,就有最后面的i个数字因为他是最小的,所以后面的每轮都不用理他了,也就是 score.length-1-i 往后的数不用管了,如上,第一轮有4个数字 i为0 ,那么score.length-1-i 为3,也就是下标是3以后的可以不用管,3往后没有数字,所以第一轮所有的数字都要参加比较,第二轮I=1 score.length-1-i 为2 也就是说 下标2后面的 下标为3的数字不用比了,因为两两比较厚,67会到 score[3],实现代码如下: for ( int i = 0 ;i < score.length - 1 ;i++) { for ( int j = 0 ;j < score.length - 1 -i;j++) // j开始等于0, { if (score[j] < score[j+ 1 ]) { int temp = score[j]; score[j] = score[j+ 1 ]; score[j+ 1 ] = temp; } } } 第二种思路,用88 和 75 比较,在和69 比较

C语言之冒泡排序

匿名 (未验证) 提交于 2019-12-03 00:27:02
最简单的排序方法,是很多排序方法的前身,比如快速排序,但效率较低。 #include <stdio.h> void input(double *nums,int num); void sort(double *nums,int num); void output(double *nums,int num); int main(void) { int num; printf("请输入要排序元素的数量:"); scanf("%d",&num); double nums[num];//C99标准 input(nums,num);//录入 sort(nums,num);//排序 output(nums,num);//输出 return 0; } void input(double *nums,int num) { int i; for(i=0;i<num;i++) { printf("请输入第%d个数:",i+1); scanf("%lf",nums+i); } } void sort(double *nums,int num) { int i,j; double temp; for(i=0;i<num-1;i++)//控制排序最大下标 { for(j=0;j<num-1-i;j++)//两两逐个比较 { if(nums[j] > nums[j+1])//改变不等号方向,改变升降序 {

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

匿名 (未验证) 提交于 2019-12-03 00:26:01
1 0 0 1 0 1 1 2 1 public class ArraySort { public static void main(String[] args) { int [] array = { 1 , 7 , 3 , 9 , 2 , 8 , 5 , 4 , 6 }; sort (array); for ( int i = 0 ; i < array. length ; i++) { out .println(array[i]); public static int [] sort( int [] array) { for ( int i = 1 ; i < array. length ; i++) { for ( int j = 0 ; j < array. length -i; j++) { if (array[j] > array[j+ 1 ]) { int temp = array[j]; 1 ]; 1 ] = temp; return array; } 2 0 1 1 public class ArraySort { public static void main(String[] args) { int [] array = { 1 , 7 , 3 , 9 , 2 , 8 , 5 , 4 , 6 }; sort (array); for ( int i = 0 ;

冒泡排序

匿名 (未验证) 提交于 2019-12-03 00:21:02
编程实现冒泡排序函数。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 printArray(int

C语言-----冒泡排序多个字符串

匿名 (未验证) 提交于 2019-12-03 00:21:02
题目: 写冒泡排序可以排序多个字符串 我们按照从大到小的顺序,应该想到用指针数组来存放字符串 void bubble_sort_str( char *arr[], int sz) { int i = 0 ; int j = 0 ; for (i = 0 ; i < sz - 1 ; i++) { for (j = 0 ; j < sz - i - 1 ; j++) { if ( strcmp (arr[j], arr[j + 1 ])< 0 ) { char * tmp = arr[j]; arr[j] = arr[j + 1 ]; arr[j + 1 ] = tmp; } } } } void print_str( char *arr[], int sz) { int i = 0 ; for (i = 0 ; i < sz; i++) { printf ( "%s " , arr[i]); } } int main() { char *arr[] = { "aafffbb" , "bbffcc" , "ddffee" , "ccffdd" }; int sz = sizeof (arr) / sizeof (arr[ 0 ]); bubble_sort_str(arr, sz); print_str(arr, sz); system( "pause" ); return 0 ;