java 合并排序算法、冒泡排序算法、选择排序算法、插入排序算法、快速排序算法的描述

算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。通俗点说,就是计算机解题的过程。在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法。前者是推理实现的算法,后者是操作实现的算法。 一个算法应该具有以下五个重要的特征: 1.有穷性:一个算法必须保证执行有限步之后结束; 2.确切性:算法的每一步骤必须有确切的定义; 3.输入:一个算法有0个或多个输入,以刻画运算对象的初始情况; 4.输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的; 5.可行性:算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。 合并排序(MERGESORT)是又一类不同的排序方法,合并的含义就是将两个或两个以上的有序数据序列合并成一个新的有序数据序列,因此它又叫归并算法。它的基本思想就是假设数组A有N个元素,那么可以看成数组A是又N个有序的子序列组成,每个子序列的长度为1,然后再两两合并,得到了一个N/2个长度为2或1的有序子序列,再两两合并,如此重复,值得得到一个长度为N的...

Java经典算法汇总之冒泡排序

冒泡排序基本思想:在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序排序要求相反时,就将它们互换。原理:比较两个相邻的元素,将值大的元素交换至右端。思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。举例说明:要排序数组:int[]arr={6,3,8,2,9,1};第一趟排序:    第一次排序:6和3比较,6大于3,交换位置:368291    第二次排序:6和8比较,6小于8,不交换位置:368291    第三次排序:8和2比较,8大于2,交换位置:362891    第四次排序:8和9比较,8小于9,不交换位置:362891    第五次排序:9和1比较:9大于1,交换位置:362819    第一趟总共进行了5次比较,排序结果:362819----------...

Java_8排序(冒泡排序和选择排序)

1.选择排序packagedemo1;publicclassDemo1{publicstaticvoidmain(String[]args){int[]arr={23,546,78,2,67};        //定义整型shuzuselectArr(arr);                //选择排序printArr(arr);                //打印数组}    //选择排序publicstaticvoidselectArr(int[]arr){for(inti=0;i<arr.length;i++){            //遍历数组for(intj=i+1;j<arr.length;j++){      //当前元素与后面的元素对比if(arr[i]>arr[j]){inttemp=arr[i];        //对数组的元素进行位置交换arr[i]=arr[j];arr[j]=temp;}}}}    //打印数组publicstaticvoidprintArr(int[]arr){for(inti=0;i<arr.length;...

经典排序算法回顾:插入排序冒泡排序

1.冒泡排序:1//第二种方法是通过不遍历有序数组来减少遍历次数,还有第三种方法:同时左右遍历,减少遍历次数2//sortthearraybubbleWay:(thenormalway)3-(void)InsertSort(int*a){4intn=strlen(a);5for(inti;i<n;i++){6for(intj;j<n-i-1;j++){7if(r[j]>r[j+1]){8inttmp=a[j];9a[j]=a[j+1];10a[j+1]=tmp;11}12}13}14}1516//sortthearraybubleWay:(thebetterway)17-(void)InsertSort(int*a){18intn=strlen(a);19inti=n-1;20while(i>0){21intpos=0;22for(intj=0;j<i;j++){23if(r[j]>r[j+1]){24pos=j;25inttmp=r[j];26r[j]=r[j+1];27r[j+1]=tmp;28}29}30i=pos;31}32}2.插入排序:(...

C# 委托实现冒泡排序

委托实现员工根据工资升序排列首先定义员工类1classEmployee2{3publicstringName{get;privateset;}4publicdecimalSalary{get;privateset;}56publicEmployee(stringname,decimalsalary)7{8this.Name=name;this.Salary=salary;9}1011publicoverridestringToString()12{13returnstring.Format("{0},{1:C}",Name,Salary);14}15publicstaticboolCompareSalary(Employeee1,Employeee2)16{17returne1.Salary<e2.Salary;18}19}重写sort方法1classBubbleSorter2{3publicstaticvoidSort<T>(IList<T>sortArray,Func<T,T,bool>comparison)4{5boolswapped=t...
代码星球 代码星球·2020-05-22

冒泡排序和直接插入排序和和快速排序和选择排序

简单排序(学完了要及时复习,不然像没学一样,而且以后要花更多的时间)冒泡排序:小的数往上冒冒泡排序(BubbleSort)是重复地走访要排序的数列,一次比较两个元素,如果他们的顺序错误,就把他们就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 原理:1.比较相邻的元素。如果第二个比第一个大,就交换他们两个。(小的在前)2.对每一对相邻元素作同样的工作,从第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3.针对所有的元素重复以上的步骤,出最后一个。4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。 时间复杂度:若文件的初始状态是正序的,一趟扫描即可完成排序。所需要的关键字比较次数C和记录和记录移动次数M均达到最小值:Cmin=n-1;Mmin=0;所以冒泡排序最好的时间复杂度为O(n)。publicclassBubbleSort{publicstaticvoidsort(long[]arr){longtmp=0;for(inti=0;i<arr.length-1;i++){//趟数...

冒泡排序的三种实现

冒泡排序是非常容易理解和实现,,以从小到大排序举例:设数组长度为N。1.比较相邻的前后二个数据,如果前面数据大于后面的数据,就将二个数据交换。2.这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第N-1个位置。3.N=N-1,如果N不为0就重复前面二步,否则排序完成。 按照定义很容易写出代码:[cpp] viewplain copy //冒泡排序1  void BubbleSort1(int a[], int n)  {         int i, j;         for (i = 0; i < n; i++)  ...
代码星球 代码星球·2020-05-17

C#冒泡排序

冒泡排序时间复杂度初始状态是正序的,一趟扫描即可完成排序,关键字比较次数C和记录移动次数M均达到最小值: ,  。若初始状态是反序的,需要进行 趟排序。每趟排序要进行  次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值  ,  冒泡排序的最坏时间复杂度为 。综上,因此冒泡排序总的平均时间复杂度为 。staticvoidMain(string[]args){int[]arrayNumber=newint[]{3,2,1,4,5,6};BubbleSort(arrayNumber);Console.ReadKey();}protectedstaticvoidBubbleSort(int[]array){inttemp;for(inti=0;i<array.Length;i++){for(intj=i+1;j<array.Length;j++){if(array[j]<a...
代码星球 代码星球·2020-05-17

Python3练习题 006 冒泡排序

importrandoma=[random.randint(1,100)foriinrange(10)]defbu(target):length=len(target)whilelength>0:length-=1cur=0whilecur<length:#拿到当前元素iftarget[cur]<target[cur+1]:target[cur],target[cur+1]=target[cur+1],target[cur]cur+=1returntargetprint(bu(a))...

【经典算法】冒泡排序

冒泡排序:从序列的一端开始往另一端冒泡,依次比较相邻的两个数的大小。设数组长度为N。1.每轮比较相邻的前后两个数据,如果前面数据大于或者小于后面的数据,就将二个数据交换。2.这样每轮对数组的第0个数据到N-1个数据进行一次遍历后,最大或者最小的一个数据就到数组第N-1个位置。3.  第一轮比较到下标为N-1的数据(最后一个),以后每次比较都-1。#include<stdio.h>intmain(){intlist[10]={5,23,86,21,43,67,45,34,58,23};inti,j,temp;for(i=0;i<10-1;i++)for(j=1;j<10-i;j++)if(list[j-1]>list[j]){temp=list[j-1];list[j-1]=list[j];list[j]=temp;}for(i=0;i<10;i++)printf("%d",list[i]);} 冒泡有一个最大的问题就是不管序列有序还是没序,双层循环的每一次比较都执行了。下面对其进行优化,设置一个标志,如果这一轮发生了交换...
代码星球 代码星球·2020-05-09

Java中的经典算法冒泡排序(Bubble Sort)

Java中的经典算法冒泡排序(Bubble Sort)SiberiaDante的博客主页 原理:比较两个相邻的元素,将值大的元素交换至右端。思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复第一趟步骤,直至全部排序完成。第一趟比较完成后,最后一个数一定是数组中最大的一个数,所以第二趟比较的时候最后一个数不参与比较;第二趟比较完成后,倒数第二个数也一定是数组中第二大的数,所以第三趟比较的时候最后两个数不参与比较;依次类推,每一趟比较次数-1;……举例说明:要排序数组:int[] arr={6,3,8,2,9,1};  第一趟排序:    第一次排序:6和3比较,6大于3,交换位置:  3  6  8  2  9  1  ...

java冒泡排序和快速排序

本ID技术干货公众号“java工会”,欢迎关注指正。 一、冒泡排序1.算法介绍  设排序表长为n,从后向前或者从前向后两两比较相邻元素的值,如果两者的相对次序不对(A[i-1]>A[i]),则交换它们,其结果是将最小的元素交换到待排序序列的第一个位置,我们称它为一趟冒泡。下一趟冒泡时,前一趟确定的最小元素不再参与比较,待排序序列减少一个元素,每趟冒泡的结果把序列中最小的元素放到了序列的”最前面”。   2.算法实现 冒泡排序封装函数的代码如下 publicvoidbubbleSort(int[]arr){inttemp;//定义一个临时变量  for(inti=0;i<arr.length-1;i++){//冒泡趟数    for(intj=0;j<arr.length-i-1;j++){//如果顺序不对,则交换两个元素     &n...
代码星球 代码星球·2020-04-12

java实现冒泡排序

一、冒泡排序:利用冒泡排序对数组进行排序二、基本概念:依次比较相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。三、实现思路:用二重循环实现,外循环变量设为i,内循环变量设为j。假如有n个数需要进行排序,则外循环重复n-1次,内循环依次重复n-1,n-2,...,1次。每次进行比较的两个元素都是与内循环j有关的,它们可以分别用a[j]和a[j+1]标识,i的值依次为1,2,...,n-1,对于每一个i,j的值依次为0,1,2,...n-i。设数组长度为N:1.比较相邻的前后二个数据,如果前面数据大...
代码星球 代码星球·2020-04-12

php冒泡排序

<?php$arr=array(1,4,2,9,0,10,12,3,7);foreach($arras$val){echo$val."--";}echo"<br/>";functionbubble_sort(&$arr){$len=count($arr);for($i=1;$i<=$len-1;$i++){for($j=$i;$j>=0;$j--){if($arr[$j]<$arr[$j-1]){$temp=$arr[$j];$arr[$j]=$arr[$j-1];$arr[$j-1]=$temp;}}}}bubble_sort($arr);foreach($arras$val){echo$val."--";}?> ...
代码星球 代码星球·2020-04-10

js冒泡排序

<scripttype="text/javascript">functionsort(arr){for(vari=0;i<arr.length;i++){for(varj=0;j<arr.length-i-1;j++){if(arr[j]<arr[j+1]){vartemp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}returnarr;}vararr=[2,5,3,1,7,8,78,89];sort(arr);alert(sort(arr));</script> ...
代码星球 代码星球·2020-04-09
首页上一页12345...下一页尾页