冒泡,选择,插入,快速,归并这五个排序是所有编程语言初学者所遇到过的,可能在实际的编程应用中不会遇到,但对于锻炼编程思维,还是有很好的作用。冒泡排序冒泡排序的就是让大的数向后冒,让小的数向前冒。通过前后两个数据比较,不断将大的元素移动到尾部。 1publicstaticvoid main(String[] args) {2// TODO Auto-generated method stub 3int []arr= {-10, 2, 3, 246, -100, 0, 5};4for(int i=0;i<arr.length-1;i++) {5for(in...
经典冒泡排序算法 using System; using System.Threading.Tasks;namespace SingletonDemo {class Program{staticvoid Main(string[] args){int[] arr = newint[10];for(int i=0;i<=9;i++){arr[i] = new Random(i+DateTime.Now.Millisecond).Next(100,999);}Console.WriteLine("排序之前的数组为 :********************************");Show(arr);Console.WriteLine();Console.WriteLine("排序中的数组为 :*************************...
冒泡排序算法 1. 原理 冒泡排序,顾名思义就是将想冒泡一样将最大的那个数冒到最高点。在一个数组中,遍历这个数组,从第一个数开始,和后面一个数两两比较,如果前面一个数比后面一个数大,就交换2个数的位置,这样可保证数组中最大的那个数一定在最后一位。这是第一次比较,接下来这个最大的数就不参与比较了,第二次比较重复上面操作,将第二大的数放在倒数第二位。同理,每次都把最大的数放在参与比较的数的最后一位,...
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){ ...