【经典算法题每日演练——第二十三题 鸡尾酒排序】教程文章相关的互联网学习教程文章

冒泡排序算法【代码】

经典冒泡排序算法 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个数的位置,这样可保证数组中最大的那个数一定在最后一位。这是第一次比较,接下来这个最大的数就不参与比较了,第二次比较重复上面操作,将第二大的数放在倒数第二位。同理,每次都把最大的数放在参与比较的数的最后一位,...

Java冒泡排序算法【代码】【图】

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...

算法常识——冒泡排序【代码】【图】

前言冒泡排序是一种通用的算法,凡是通用的,可以理解为效率不高,但是通用。code从小到大的排序:static void Main(string[] args) {int[] intarr = new int[] {1,6,8,2,3,5,10,48,9 };sort(intarr);foreach(var i in intarr){Console.Write(i+"\n");}Console.ReadKey(); } public static void sort(int[] arr) {var temp = 0;var hasSore = true;for(var i=0;i<arr.Length-1;i++){for (var j=0;j<arr.Length-1-i;j++){if (arr[j] ...

前端排序算法 - 希尔排序算法 (6)【代码】【图】

#### 思想在希尔排序的理解时,我们倾向于对于每一个分组,逐组进行处理,但在代码实现中,我们可以不用这么按部就班地处理完一组再调转回来处理下一组(这样还得加个for循环去处理分组)比如[5,4,3,2,1,0] ,首次增量设gap=length/2=3,则为3组[5,2] [4,1] [3,0],实现时不用循环按组处理,我们可以从第gap个元素开始,逐个跨组处理。同时,在插入数据时,可以采用元素交换法寻找最终位置,也可以采用数组元素移动法寻觅 #### 实...

C++、C#、java算法学习日记04----二分插入排序【图】

经过上几篇对排序算法的了解,我们发现,所谓的排序也就是确定一个数组中每个元素的位置,然后对号入座,其过程也就是找到该元素的位置。确定位置,使用二分法可以达到很高的效率,我们将他应用到插入排序中就算是对上篇中排序的一种优化,能提高效率。基本思想: 与上篇中的插入排序类似分已排序和未排序部分,然后将未排序 部分元素逐个插入,但是插入的过程不同,需要每次求一个 中间位置,和中间位置元素比较大小,然后根据...

快速排序算法 java实现【代码】

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...

c++几种排序算法代码【代码】【图】

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; 或者 ...

坐在马桶上看算法:快速排序【代码】【图】

初始状态:6 1 2 7 9 3 4 5 10 8排序的过程图 首先哨兵j开始出动。因为此处设置的基准数是最左边的数,所以需要让哨兵j先出动,这一点非常重要(请自己想一想为什么) ::最后和基准数交换的一定是小于基准数的数、#include <cstdio> #include <algorithm> usingnamespace std; int s[100],n; void quick_sort(int left,int right){//left--right的区间排序if(left>=right) return;int tm=s[left]; //基准数int i=left,j...

冒泡排序算法【代码】【图】

冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除了最后一个。持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。冒泡排序的Java实现: 1 package com.mianshi.easy;2 public class Bubble {3 4 public static void main(Stri...

Enum<E extends Enum<E>>类和排序算法

1 Enum<E extends Enum<E>>类这是所有 Java 语言枚举类型的公共基本类。2 常见排序算法冒泡法。简单。比较小的需求可以采用此方法。快速排序。确定关键字,将数据分为小于和大于关键字两部分。然后递归快排这两部分。插入排序。将数据分为有序和无序两部分,逐一遍历无序部分,将记录逐条插入有序部分。有改进的折半插入排序,即插入的时候采用二分查找确认插入位置。希尔排序。将数据间隔分组,组内进行插入排序。间隔逐次递减,直...

【算法学习笔记】51. 区间排序问题 SJTU OJ 1360 偶像丁姐的烦恼【代码】【图】

Description成为LL冠军的人气偶像丁姐最近比较烦,许多商业活动找上门来。因为每次商业活动给的毛爷爷都一样,所以丁姐希望能够尽可能多的参加这些活动。然而,商业活动的起止时间并不由丁姐说了算,因此丁姐想写一个程序,求出他最多能够参加的商业活动的数量。Input Format第一行一个数n,表示可选活动的数量。接下n行每行两个数,表示每个活动开始时间t1_i和结束的时间t2_i。Output Format一个数字,表示丁姐最多能够参加的活动...