【java实现各种排序算法及比较】教程文章相关的互联网学习教程文章

排序算法【代码】

1、冒泡排序:从尾致头做一遍相邻元素的两两比较,将小的元素往前交换位置,一遍下来得到第一个元素为最小的,然后在剩余的n-1个元素中再进行比较,选出第二个最小的,以此类推。不稳定、O(n2)function bubbleSort(arr){var i,j,tmp,len=arr.length;for(i=0;i<len;i++){for(j=len-1;j>i;j--){if(arr[j]<arr[j-1]){tmp = arr[j];arr[j] = arr[j-1];arr[j-1] = tmp;}}}return arr; }2、快速排序:选取一个基准,将大于它的元素放在右...

常规的排序算法【代码】

在此列举常用简单的排序算法,冒泡、插入、归并和快排,后边有机会再添加其他排序方法。冒泡排序思想:每次交换相邻元素,时间复杂度为O(N^2)privatestaticvoid bubbleSort(int[] n) {//相邻元素交换位置,时间复杂度为O(N^2)for(int i = 0; i < n.length; i++) {for(int j = 0; j < n.length-1; j++) {if(n[j] > n[j+1]) {int tmp = n[j];n[j] = n[j+1];n[j+1] = tmp;}}}}插入排序思想:每次从后边获取一个元素,与前边已排好序...

java实现经典排序算法【代码】【图】

前言博主最近在恶补基础知识,算法必然是必不可少的,那么就从经典排序算法开始吧!(图源网络,侵删),没有列出全部,因为在期末考试囧代码太多,就只显示了最关键的部分1. 冒泡排序 实现思路: (1)比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。 (2)这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第 N-1个位置。 (3)N=N-1,如果N不为 0就重复前面二步,否则排...

【Python之路22】冒泡排序算法【代码】

1、变量互换a = 123 b = 456temp = a a = b b = temp python比较简单的变量互换:a = 123 b = 456 a,b = b,a print(a,b) 2、将列表中最大的值放置到最后#!usr/bin/env python # -*- coding:utf-8 -*- li = [11,44,33,66,22] for i in range(len(li)-1):if li[i] > li[i+1]:temp = li[i]li[i] = li[i+1]li[i+1] = tempprint(li) 3、循环嵌套冒泡排序法#!usr/bin/env python # -*- coding:utf-8 -*- li = [11,44,33,66,77,99,44] fo...

10种排序算法基础总结【图】

基于比较的排序:  基础排序: 冒泡排序:谁大谁上,每一轮都把最大的顶到天花板 效率太低——掌握swap。选择排序:效率较低,但经常用它内部的循环方式来找最大值和最小值。插入排序:虽然平均效率低,但是在序列基本有序时,它很快,所以也有其适用范围。希尔排序(缩小增量排序):是插排的改良,对空间思维训练有帮助 时间复杂度O(n1.3),介于O(nlgn)~O(n2)之间  分治法:快速排序:是软件工业中最常见的常规排序法,其双向...

排序算法(python实现)【代码】

# 找到序列中最小元素,然后与第一个交换,如果第一个为最小和自己交换 # 再从剩下的元素中找到最小元素,与剩下的元素中的第一个交换。 # 核心的意思就是每次要在剩余元素中选出最小,排到前面的位置def select_sort(sort_list):"""选择排序"""n = len(sort_list)for i in range(n-1):min_index = ifor j in range(i+1, n):if sort_list[j]< sort_list[min_index]:min_index = iif min_index != i:sort_list[i], sort_list[min_in...

各主流排序算法详细介绍【代码】【图】

一,插入排序插入排序基本思想:  在一个已经有序的序列里插入新的元素,直到有序序列包含所有被排序元素。例子:   代码实现:void InsertSort(vector<int> &v) {for(int i = 1;i < v.size(); ++i)//i表示有序集合里的元素数目和待插入元素下标 {for(int j = i; j > 0 && v[j-1] > v[j]; --j){int temp = v[j-1];v[j-1] = v[j];v[j] = temp;}} }View Code时间复杂度为O(N^2)空间复杂度为O(1)插入排序在小规模数据时或者...

利用二分法实现插入排序算法(二分法使用递归来实现)【代码】

最近在看《算法导论》这本书,在练习题当中发现了这样的一个问题:使用二分查找法来实现插入排序,由于之前的内容当中有讲解二分法的递归实现,所以在这便将它们结合起来希望解决这个问题。闲话不多说了,直接上代码:// Algrithms.cpp : 定义控制台应用程序的入口点。 ////使用二分法来完成插入排序,并且使用递归算法来完成二分法 #include "stdafx.h"int Binary_Divide(int A[], int low, int height, int key){//递归终止的条件...

归并排序算法【代码】

package cn.firstflag.crm.service;import org.apache.log4j.Logger;/*** * @author zhanmin.zheng**/publicclass mergerSortTest {privatestatic Logger log = Logger.getLogger(mergerSortTest.class);publicvoid merger() {int[] data = newint[] { 5, 3, 6, 2, 1, 9, 4, 8, 7 }; mergerSort(data, 0, data.length-1);}publicstaticvoid mergerSort(int[] data, int left, int right) {if (left >= right) {return;}int center...

排序算法四(桶排序)【代码】

一、桶排序算法的引入。  之前我们已经说过了计数排序的算法。  这个时候我们如果有这样的一个待排序数据序列:int x[14]={-10, 2, 3, 7, 20, 23, 25, 40, 41, 43,60, 80, 90, 100};  我们如果按照计数排序的算法,那么待排序数据的范围是:-10 到 100  我们为了实现对于这个数据集的遍历,这个时候需要额外的开辟一个大小为(100- (-10)+ 1)的空间,这个时候的空间复杂度达远远超过我们的预计,也就是这个造成了空间...

面试中可能被问到的常用排序算法【代码】

排序算法排序算法是一种比较简单的算法,从我们一开始接触计算机编程开始接触的可能就是排序或者搜索一类的算法,但是因为排序在其他的一些算法中应用较多,所以为了提高性能已经研究了多种排序算法。目前区别排序算法主要还是以时间复杂度,空间复杂度,稳定性等来排序,接下来我们分别分析。稳定性算法区别一个排序算法是否是稳定算法只需看相同的关键字在排序完成后是否保持原来两者的前后关系即可,比如对于[1,2,3,4,1],a[0]=a...

Java中几种常见排序算法【代码】

日常操作中常见的排序方法有:冒泡排序、快速排序、选择排序、插入排序、希尔排序等。冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。* 冒泡法排序* 比较相邻的元素。如果第一个比第二个大,就交换他们两个...

[数据结构] 几种排序算法【图】

插入排序  直接插入排序(Insertion Sort)的基本思想是:每次将一个待排序的元素,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。   设数组为a[0…n-1]。   1. 初始时,a[0]自成1个有序区,无序区为a[1..n-1]。令i=1   2. 将a[i]并入当前的有序区a[0…i-1]中形成a[0…i]的有序区间。   3. i++并重复第二步直到i==n-1。排序完成。   希尔排序  希尔排序的实质就是分组插入排序。...

排序算法总结之直接插入排序【图】

基本思想插入排序(Insertion Sort)基本思想是:依次将待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到全部记录插入完成为止。具体来说,对于一个有n个数据的序列,排序需要进行n-1趟插入操作。形象来看,每一趟插入操作就像大家玩扑克牌的摸牌阶段,我们使用左手拿着已经摸到并排好大小的牌,右手从牌堆里边摸牌,每摸一张牌就将其插入到左手理顺的牌中,插入后保持其大小顺序。具体来看整个排序过...

排序算法之 '快速排序'【代码】

快速排序快速排序(Quicksort)是对冒泡排序的一种改进。快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。排序流程快速排序算法通过多次比较和交换来实现排序,其排序流程如下:(1)首先设定一个分界值,通过...