为您找到搜索结果:908个
九大经典算法之冒泡排序、快速排序
每次选择两个元素,按照需求进行交换(比如需要升序排列的话,把较大的元素放在靠后一些的位置),循环n次(n为总元素个数),这样小的元素会不断“冒泡”到前面来。普通版voidbubbleSort(intarr[],intn){//标准版for(inti=0;i<n-1;i++){for(intj=0;j<n-1-i;j++){if(arr[j]>arr[j+1]){arr[j]+=arr[j+1];arr[j+1]=arr[j]-arr[j+1];arr[j]-=arr[j+1];}}}}进阶版voidbubbleSort(intarr[],intn){boolswapp=true;while(swapp){swapp=false;for(inti=0;i<n-1;i++){//这里的n要减1if(arr[i]>arr[i+1]){arr[i]+=a[i+1];arr[i+1]=arr[i]-arr[i+1];arr[i]-=a[i+1];swapp=true;}}}}空间效率:O(1)时间效率:最好情况:O(n)  ...
冒泡排序
1.比较相邻的两个元素,如果前一个比后一个大,则交换位置。 2.第一轮的时候最后一个元素应该是最大的一个。 3.按照步骤一的方法进行相邻两个元素的比较,这个时候由于最后一个元素已经是最大的了,所以最后一个元素不用比较。...
php算法之冒泡排序
一、冒泡排序 原理:对一组数据,比较相邻数据的大小,将值小数据在前面,值大的数据放在后面。 (以下都是升序排列,即从小到大排列) 举例说明: $arr=array(6,3,8,2,9,1); $arr有6个数据,按照两两比较大小如下,注意 比较轮数和每轮比较次数 第一轮排序: 第一次比较 6和3比较结果:3 6 8 2 9 1 第二次比较 6和8比较结果:3 6 8 2 9 1 第三次比较 8和2比较结果:3 6 2 8 9 1 第四次比较 8和9比较结果:3 6 2 8 9 1 ...
经典数组排序方法------选择排序法,冒泡排序法
一:使用选择排序法,冒泡排序法对一维数组进行排序,截图/*选择排序的个人理解:第一遍内循环,选出其中最大的值,得到值和下标外层循环将最大的值的位置和数组的第一个位置交换从数组的第二个位置开始第二遍筛选将其中最大的值的位置和数组的第二个位置交换直到筛选完数组*//*冒泡排序法的个人理解第一次内循环将相邻的两个数的较大值放到右边,从而得到最后边的值是最大的外循环将进行下一次的内循环,将次最大的数值放到倒数第二个位置外循环执行n-1次得到排序的数*/二:代码usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;namespaceselectSortArray{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}int[]array={0...
选择排序&冒泡排序
//直接选择排序#include<stdio.h>voidSelectionSort(intarr[],intlen){inti,j;intk,min;inttemp;for(i=0;i<len-1;i++){min=arr[i];//每趟排序都把无序区第一个数设置为最小k=i;for(j=i+1;j<len;j++){if(arr[j]<min){min=arr[j];k=j;//记录下此次最小数索引}}if(k!=i)//如果上面的if执行过{//交换temp=arr[k];arr[k]=arr[i];arr[i]=temp;}}for(i=0;i<len;i++)printf("%d",arr[i]);}intmain(){inta[10]={0,1,7,2,5,4,3,6,8,9};SelectionSort(a,10);return0;}//冒泡排序voidBubbleSort(intarr[],intlen){inti,j;intsign,temp;for(i=0;i<len;i++){sign=0;for(j=len-1;j>...
算法5-排序-冒泡排序
(1)基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。(2)实例:3)用java实现publicclassbubbleSort{publicbubbleSort(){inta[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51};inttemp=0;for(inti=0;i<a.length-1;i++){for(intj=0;j<a.length-1-i;j++){if(a[j]>a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}}for(inti=0;i<a.length;i++)System.out.println(a[i]);}} ...
算法学习之冒泡排序,6174问题
排序与检索数据处理是计算机的强项,包括排序、检索和统计等。6174问题假设你有一个各位数字互不相同的四位数,把所有数字从大到小排序后得到a,从小到大排序后得到b,然后a-b替换原来这个数,最终都会得到6174。例如,从1234出发,依次可以得到4321-1234=3087,8730-378=8352,8532-2358=6174。有趣的是,7641-1467=6174回到了它自己。输入一个n位数,输出操作序列,直到出现循环。样例输入:1234样例输出:1234->3087->8352->6174->6174分析:两个问题摆在我们面前:如何得到下一个数?如何检查这个数是否已经出现过?一一解决。“冒泡排序”#include<conio.h>#include<stdio.h>#include<string.h>intget_next(intx){inta,b,n;chars[10];//转化成字符串sprintf(s,"%d",x);n=strlen(s);//冒泡排序for(inti=0;i<n;i+...
使用C语言和Java分别实现冒泡排序和选择排序
经典排序算法——冒泡和选择排序法基本思想是,对相邻的元素进行两两比较,顺序相反则进行交换,这样,每一趟会将最小或最大的元素放到顶端,最终达到完全有序,首先看个动图:我们要清楚一点,冒泡排序是相邻元素的两两比较,再看下图是否会清晰些:输入的数据为:10304033578111002366第一次排序,从第一个数10依次比较,若10比后者小,则进行交换,当比较到5时,10比5大,所以10就停在第四个位置,再用5去比较,后面的数都比5大,所以5就排到最后了同理,第二次排序,仍然从第一个数30开始比较,分别跟40,33交换了顺序,比到10的时候,30比10大,所以30就停在了第三个位置,再用10去比较,10只比5大,所以排在了倒数第二个位置依次10次比较后,得到最终排序结果Java实现冒泡排序代码如下,代码实现过程,用一个临时变量来做中间值,从而实现交换:1packagemaopaopaixu;23importjava.util.Scanner;//使用到了scanner函数,所以需要导包45publicclassmaopao{67publicstaticvoidmain...
冒泡排序——Bubble Sort
1、如果遇到相等的值不进行交换,那这种排序方式是稳定的排序方式。2、原理:比较两个相邻的元素,将值大的元素交换到右边。3、思路:依次比较相邻的两个数,将比较小的数放在前面,比较大的数放在后面。 (1)第一次比较:首先比较第1个数和第2个数,将小数放在前面,大数放在后面。 (2)比较第2和第3个数,将小数放在前面,大数放在后面。 ...... (3)如此继续,直到比较到最后的两个数,将小数放在前面,大数放在后面。重复步骤,直至全部排序完成。 (4)在上面一趟比较完成后,最后一个数一定是数组中最大的一个数,所以在比较第二趟的时候,最后一个数是不参加比较的。 (5)在第二趟比较完成后,倒数第二个数也一定是数组中倒数第二大数,所以在第三趟的比较中,最后两个数是不参与比较的。 (6)以此类推,每一趟的比较次数依次减少。4、算法分析: (1)由此可见:N个数字要排序完成,总共进行N-1趟排序,每i趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数。 (2)冒泡排序的优点:每进行一趟排序,就会少比较一...
Java中的冒泡排序和选择排序
1//冒泡排序2publicclassTest5{3publicstaticvoidmain(String[]args){4int[]arr={12,2,25,89,5};5bubbleSort(arr);6printArray(arr);7}8publicstaticvoidbubbleSort(int[]arr){9for(inti=0;i<arr.length-1;i++){10for(intj=0;j<arr.length-i-1;j++){11if(arr[j]>arr[j+1]){12inttemp=arr[j];13arr[j]=arr[j+1];14arr[j+1]=temp;15}1617}18}19}20publicstaticvoidprintArray(int[]arr){21for(inti=0;i<arr.length;i++){22System.out.println(arr[i]);23}24}25}2627选择排序如下282930publicclassTest4{31publicstaticvoidmain(String[]ar...
冒泡排序学习笔记
冒泡排序,从名字上解读,我们来观想一个画面,就是泡泡从水底慢慢冒上来的画面,呵呵,我是很喜欢看漫画片的,想想以前看的动漫里面,鱼儿吐的泡泡是怎么样子的呀,从下往上的,而这个过程中,我们可以解读到一个点,就是从下往上的过称,每一步拆分开来就是每一次泡泡前进一步,就是当前位置到后面的一个位置,而动漫中泡泡会怎么样呀,往上的时候泡泡是慢慢变大的,放在这里就是数据和后一个数据比较,然后将大的值移动到后面(当然这里不一定一定要把大的值放在后面,也可以把小的值放在后面,具体看我们需要的是什么,这里这样说明,是为了更加方便解读以及理解)。当大的泡泡出来了,那么跳过这个泡泡代表的值,我们开始重新选出最大的泡泡,直到吐不出泡泡为止(要筛选的数组变空)。网络中很多的冒泡排序都是for循环嵌套实现的,很多,我今天在写的时候再想,这个如果不用for循环嵌套可以不可以,然后就实现了下面的递归类型的冒泡,在此提供出来与大家分享,如果有不妥的地方,请看了的朋友多多指点才好。1package算法.排序;23/**4*冒泡排序5*@authorAdministrator6*7*/8publicclassBubbleSo...
冒泡排序法
****//**Homework12*冒泡算法*ArrayDemo02*有一个长度是10的数组,数组内有10个不重复的数字,*要求按从大到小排序*@author 读你一世**QQ:1816274408*2017年4月12日下午4:49:57**/publicclassArrayDemo02{publicstaticvoidmain(String[]args){intarray[]=newint[]{10,20,30,40,50,60,70,80,90,100};System.out.print("未排序数组:");for(inti=0;i<array.length;i++){System.out.print(array[i]+"");}System.out.println();//冒泡排序for(inti=0;i<array.length-1;i++){//array.length-i-1for(intj=0;j<array.length-i-1;j++){if(array[j]<array[j+1]){inttemp=array[j];array[j...
php算法,冒泡排序
冒泡排序/****从小到大排列*逻辑分析假设数组$arr=[a,b,c,d];*总数=4;*比较对象第几个元素比较次数*a13*b22*c31**/functionele_sort($arr){$length=count($arr);if($length<2){return$arr;}for($i=0;$i<$length;$i++){for($j=$i+1;$j<$length;$j++){if($arr[$i]>$arr[$j]){$tmp=$arr[$j];$arr[$j]=$arr[$i];$arr[$i]=$tmp;}}}return$arr;}$arr1=[12,42,53,21,76865,86,43,1];var_dump(ele_sort($arr1)); functionbubble_sort($array){$count=count($array);if($count<=0)returnfalse;for($i=0;$i<$count;$i++){for($j=$count-1;$j>$i;$j--){if($a...
排序学习之---冒泡排序
原理:对一组数据,比较相邻数据的大小,将值小数据在前面,值大的数据放在后面。 (以下都是升序排列,即从小到大排列) 举例说明: $arr=array(6,3,8,2,9,1); $arr有6个数据,按照两两比较大小如下,注意 比较轮数和每轮比较次数 第一轮排序: 第一次比较 6和3比较结果:3 6 8 2 9 1 第二次比较 6和3比较结果:3 6 8 2 9 1 第三次比较 8和2比较结果:3 6 2 8 9 1 第四次比较 8和9比较结果:3 6 2 8 9 1 第五次...
php排序学习之-冒泡排序
原理:对一组数据,比较相邻数据的大小,将值小数据在前面,值大的数据放在后面。 (以下都是升序排列,即从小到大排列) 举例说明: $arr=array(6,3,8,2,9,1); $arr有6个数据,按照两两比较大小如下,注意 比较轮数和每轮比较次数 第一轮排序: 第一次比较 6和3比较结果:3 6 8 2 9 1 第二次比较 6和3比较结果:3 6 8 2 9 1 第三次比较 8和2比较结果:3 6 2 8 9 1 第四次比较 8和9比较结果:3 6 2 8 9 1 第五...