package com.jckb;/*** 冒泡排序* @author gx*/publicclass BubbleSort {publicstaticvoid main(String[] args) {int[] arr = { 6, 3, 8, 2, 9, 1 };for (int i = 0; i < arr.length - 1; i++) {for (int j = 0; j < arr.length - 1 - i; j++) {if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}System.out.println("排序后的数组为:");for (int item : arr) {System.out.print(item + "\t...
#### 思想在希尔排序的理解时,我们倾向于对于每一个分组,逐组进行处理,但在代码实现中,我们可以不用这么按部就班地处理完一组再调转回来处理下一组(这样还得加个for循环去处理分组)比如[5,4,3,2,1,0] ,首次增量设gap=length/2=3,则为3组[5,2] [4,1] [3,0],实现时不用循环按组处理,我们可以从第gap个元素开始,逐个跨组处理。同时,在插入数据时,可以采用元素交换法寻找最终位置,也可以采用数组元素移动法寻觅 #### 实...
1publicclass QuickRank {2publicstaticvoid main(String[] args) {3int[] original={26,58,1,24,75,69,32,45,841,25898};4 QuickRank quickRank=new QuickRank();5 quickRank.rankSimple(original,0,original.length-1);6for(int i:original)7 System.out.println(i);8}9//清晰明了10publicvoid rankSimple(int[] original,int start,int end){ 11if(end<=start) return;//递归结束条件12int standard=original[st...
1 #include <iostream>2 #include <vector>3usingnamespace std;4 5//交换int 6void swap(int& a, int& b){7int temp = a;8 a = b;9 b = temp; 10}11 12//冒泡 13void BulletSort(vector<int>& nums){14int n = nums.size();15for (int i = 0; i < nums.size()-1; i++){16for (int j = 0; j < nums.size() - i -1; j++){17if (nums[j] > nums[j+1]){18 swap(nums[j], nums[j+1]);19 }20 ...
本文将给出六大经典排序的实现。 简单排序算法:冒泡,插入,选择 改进排序算法:快排,归并,堆排以下排序用到的交换函数:void swap(int &A, int &B) {int temp = A; A = B; B = temp; }1. 冒泡排序2个相邻的元素相互比较,不满足顺序则交换;每遍历一次数组,使一个元素处于最终位置。 时间复杂度O(n2)/**/ 空间复杂度O(1)/**/void BubbleSort(int nums[], intleft, intright) {if (nums == NULL || right-left+1 <= 0)retur...
基数排序(Radix sort)是一种非比较型的整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。基数排序也分为LSD(Least significant digital)和MSD(Most significant digital)两种方式,LSD的排序方式由键值的最右边开始,而MSD则相反,由键值的最左边开始。以LSD为例,假设原来有一串数值如下所示: 73, 22, 93, 43, 55, 14, 28, 65, 39, 81 首先根据个位数的数值,在走访数值时将它们分配至编...
希尔排序一、基本概念 希尔排序是插入排序的一种,又称“缩小增量排序”,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。二、基本原理 希尔排序是把记录按下标的一定量分组,在直接插入排序算法的基本原理的基础上进行改进排序; 随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个数组恰被分成一组,算法便终止。三、实现步骤 1. 对整个数组进行分组,即gap = len / 2; 或者 ...
冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。冒泡排序的Java实现: 1 package com.mianshi.easy;2 public class Bubble {3 4 public static void main(Stri...
1 Enum<E extends Enum<E>>类这是所有 Java 语言枚举类型的公共基本类。2 常见排序算法冒泡法。简单。比较小的需求可以采用此方法。快速排序。确定关键字,将数据分为小于和大于关键字两部分。然后递归快排这两部分。插入排序。将数据分为有序和无序两部分,逐一遍历无序部分,将记录逐条插入有序部分。有改进的折半插入排序,即插入的时候采用二分查找确认插入位置。希尔排序。将数据间隔分组,组内进行插入排序。间隔逐次递减,直...
function InsertSort($arr){$num = count($arr);for($i = 1; $i < $num; $i++){$key = $arr[$i];for($j = $i - 1; $j >= 0; $j--){if($arr[$j] > $key){$arr[$j + 1] = $arr[$j];$arr[$j] = $key;}}}return$arr; }function BubbleSort($arr){$num = count($arr);for( $i = 1; $i < $num; $i++ ){for($j = $num -1; $j >= $i; $j-- ){if( $arr[$j] < $arr[$j - 1] ){$tmp_val = $arr[$j - 1];$arr[$j - 1...
选择排序:选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。选择排序说白了就是用索引去排序。话不多说,上代码》》》 package sdx;import java.util.Arrays;public class Main7 { ...
import java.util.Scanner; /** * @author 杨川 * */ public class Sort { public static void main(String[] args) { int a[] = input(); insertSort(a); shellSort(a); selectSort(a); fastSort(a,0,a.length-1); for (int k = 0; k < a.length; k++) { System.out.print(a[k] + " "); } } static void fastSort(int[]a,int s,int t){ ...
顾名思义,冒泡排序直观的意思是气泡越大冒的越快:),对应到我们的列表中就是数字最大的先选出来,然后依次进行。例如 myList = [1,4,5,0,6],比较方式为: 相邻的两个数字先进行比较,也就是myList[0]和myList[1],发现不是">"的关系,就继续比较myList[1]和myList[2]。。。依次进行,发现myList[2]>myList[3](及5>0),就进行交换,所以走完第一次全列表比较得到新列表[1,4,0,5,6],然后每一次扫描得到的新列表如下: 第一次...
排序算法很多地方都会用到,近期又重新看了一遍算法,并自己简单地实现了一遍,特此记录下来,为以后复习留点材料。废话不多说,下面逐一看看经典的排序算法: 1. 选择排序选择排序的基本思想是遍历数组的过程中,以i代表当前需要排序的序号,则需要在剩余的[i…n-1]中找出其中的最小值,然后将找到的最小值与i指向的值进行交换。因为每一趟确定元素的过程中都会有一个选择最大值的子流程,所以人们形象地称之为选择排序。举个实例...
基本思想希尔排序是基于插入排序的,又叫缩小增量排序。在插入排序中。标记符左边的元素是有序的,右边的是没有排过序的,这个算法取出标记符所指向的数据,存入一个暂时变量,接着,在左边有序的数组中找到暂时变量应该插入的位置,然后将插入位置之后的元素依次后移一位,最后插入暂时变量中的数据。试想。假如有一个非常小的数据项在靠近右端的位置上。把这个数据项插入到有序数组中时,将会有大量的中间数据项须要右移一位。这...