【Java选择排序】教程文章相关的互联网学习教程文章

c语言 冒泡,插入,选择排序【代码】

冒泡排序//冒泡排序 /* 每两个数之间做比较:较大的数放到右边,循环下去;就能够把最大的数字换到数组最后面 然后数组长度-- 再两个数之间作比较。。。。。 */void bubble(int a[],int n) {for(int i=0;i<n-1;i++)//注意a[n-1]为数组的最后一项,没有数字和他做比较,故i<n-1 {if(a[i]>a[i+1])a[i]=a[i]+a[i+1]-(a[i+1]=a[i]);} } void bubbleSort(int a[],int n) {while(n>0)bubble(a,n--); } int main(){int a[7]={7,2,1,3...

堆排序(JAVA)【代码】

package org.rev.algorithm;/** * 堆排序,时间复杂度为O(nlogn),是利用堆的性质进行的一种选择排序。 * * 大顶堆是一个完全二叉树,所有的父节点都大于或等于它的左右子节点,即a[i]>=a[2i+1]&&a[i]>=a[2i+2]。 *(小顶堆是父节点<=子节点) * * 对于完全二叉树,任意节点a[i]的父节点的索引值是(i-1) / 2 向下取整。 * * 1.对于序列a[0]-a[n-1],构建大顶堆,堆顶a[0]为最大值。 * * 2. 交换堆顶a[0]和最后一个元素...

选择排序---堆排序算法(Javascript版) 降序排列【代码】

//调整函数function headAdjust(elements, pos, len){//将当前节点值进行保存var swap = elements[pos];//定位到当前节点的左边的子节点var child = pos * 2 + 1;//递归,直至没有子节点为止while(child < len){//如果当前节点有右边的子节点,并且右子节点较小的场合,采用右子节点//和当前节点进行比较if(child + 1 < len && elements[child] > elements[child + 1]){child += 1;}//比较当前节点和最大的子节点,大于则进行值交换...

快速排序算法【代码】【图】

题目链接:https://www.acwing.com/problem/content/description/787/吐槽:看了好几种快速排序的代码,要么是pivot为左边界AC不通过,要么就是边界情况没考虑清楚。属实恶心 下面写了3种AC通过的代码。先介绍下基本知识 快速排序的基本思想是基于分治策略的,其算法思想如下。分解:先从数列中取出一个元素作为基准元素(左、中、右、随机)。以基准元素为标准,将问题分解为两个子序列,使小于或等于基准元素的子序列在左侧,使大于...

JavaScript 实现排序算法【图】

参考文章:十大经典排序算法动画,看我就够了!冒泡排序1选择排序1插入排序1归并排序1快速排序1原文:https://www.cnblogs.com/xuehaoyue/p/14332034.html

0132 算法的概念、冒泡排序【代码】【图】

算法:观察执行过程,找到规律,转为代码。 // 冒泡排序// var arr = [5, 4, 3, 2, 1];var arr = [4, 1, 2, 3, 5];// 外层循环管趟数 【5个元素,冒泡排序4趟,应该是arr.length - 2,结果一样】for (var i = 0; i <= arr.length - 1; i++) {for (var j = 0; j <= arr.length - i - 1; j++) { // 里面的循环管 每一趟的交换次数// 内部交换2个变量的值 前一个和后面一个数组元素相比较if (arr[j] < arr[j + 1]) {var temp =...

数据结构——八大排序算法

驱动程序:public class Main { public static void main(String[] args) { int[] array={2,0,3,4,1,9,6,8,7,5}; print(Sort.bubbleSort(array, true));//冒泡 print(Sort.InsertionSort(array, true));//插入 print(Sort.mergeSort(array,true, "recursion"/*circulate*/));//归并 print(Sort.quickSort(array, true));//快速 print(Sort.radixSort(array, true));//基数 pr...

《直接插入排序》算法设计之三【图】

直接插入排序 每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的序列中,知道全部记录插入完成。 排序过程 1.每次插入的数值都要与自己前面的做比较 A.如果大于前面的数,则停止。因为每次都是排好的序列 B.如果小于前面的数,接着向前比较,指导找到自己的位置,插入即可 如右图所示 当插入2时,需要与前面做比较,直到找到自己合适的位置即可 当插入1时,用现在插入的数值依次与前面做比较,直到找到合适的位置...

堆排序【代码】

/** 堆排序有2中实现方式:1. 将数组调整为最小堆O(n) 在不断地删除一个元素 调整为最小堆。 最后将有序数组复制回 A[] 空间复杂度为O(n) 时间复杂度O(n*logn).2. 还有更好的算法思路为: 1.先调整为最大堆 将堆顶元素和最后一个元素交换 2.在对剩下的元素重复操作1.空间复杂度为O(1) 时间复杂度为O(n*log n)。 */ #include "iostream"usingnamespace std; void adjust(int a[],int i,int n) {int temp = a[i];int child;for (; ...

一个简单的快速排序【代码】

<?php /** * Created by PhpStorm. * User: saint * Date: 15/8/5 * Time: 上午11:49 */ class Demo { public $a = array(3, 6, 9, 2, 4, 7, 1, 5, 8, 0); public function qsort($left, $right) { if($left > $right) { return; } $i = $left; $j = $right; $standard = $this->a[$left]; while($i != $j) { // 从右向左查找比基准数小的单...

插入排序【代码】

1 #include"iostream" 2#define N 103usingnamespace std;4void excha(int &a,int &b);5int main(){6int a[N]={1,3,2,4,5,6,7,8,9,0};7int i,j,min;8for(int i=1;i<N;i++){91011for(int j=i;j>0&&(a[j]<a[j-1]);j--){ 12 excha(a[j],a[j-1]); 13 } 14 } 15for(int i=0;i<N;i++){ 16 cout<<a[i]<<""; 17 } 18return0; 19} 20void excha(int &a,int &b){ 21int c; 22 c=a; 23 a=b; 24 ...

插入排序

在冒泡排序、选择排序编写代码之后,楼主渐渐找到了coding的信心,熟能生巧,就像写词唱曲之前,都得先背诵大量的诗词,熟悉各路歌曲,才干走出自己的路线,有自己的杰作。好吧,来让楼主继续进行"社会主义0基础阶段"的任务,这次是插入排序。一. 算法描写叙述 插入排序:插入即表示将一个新的数据插入到一个有序数组中,并继续保持有序。比如有一个长度为N的无序数组,进行N-1次的插入即能完毕排序;第一次,数组第1个数觉得是...

数据结构与算法系列——排序(12)_计数排序【代码】【图】

1. 工作原理(定义)  计数排序是一个非基于比较的排序算法,该算法于1954年由 Harold H. Seward 提出。它的优势在于在对一定范围内的整数排序时,它的复杂度为Ο(n+k)(其中k是整数的范围),快于任何比较排序算法。当然这是一种牺牲空间换取时间的做法,而且当O(k)>O(n*log(n))的时候其效率反而不如基于比较的排序(基于比较的排序的时间复杂度在理论上的下限是O(n*log(n)), 如归并排序,堆排序)  计数排序是一种稳定的线性...

数据结构精要------直接选择和堆排序算法

上篇总结中主要实践了算法的内排序的交换排序,那么接下来我们继续实践选择排序的两种:直接选择和堆排序算法。-----直接选择排序package com.sort;/*** 直接选择排序算法* @author weixing-yang** 算法思路:* 首先找出最大元素,将其与a[n-1]位置置换。* 然后在余下的n-1个元素中寻找最大元素,将其与a[n-2]位置置换。* 如此进行下去,知道n个元素排序完成。*/ public class SelectSort {public void selectSort(int[] arr, i...

堆排序【代码】

堆排序堆排序以二叉形式。以数组形式表示。a[1] 是二叉堆的跟结点,每个结点的有左右子结点。规定每个结点的值大于其子节点的堆叫最大堆,小于的叫最小堆。无序数组通过建堆的方式建立成一个最大或最小堆。算了 ,说不清,上代码。代码:#include <bits/stdc++.h> using namespace std; const int MAXN = 100; int a[MAXN] = {0,4,1,3,2,16,9,10,14,8,7};//10 int n = 10;//数的个数void Max_Heap(int x,int n) {//维护根节点为x的...