// 寄生构造方式实现继承var MyArray=function(){var arr=new Array();// 添加值arr.push.apply(arr,arguments);//和下面的循环一个效果// for (var i = 0; i < arguments.length; i++) {// arr.push(arguments[i]);// }// ===========================插入排序=====================================arr.insertSort=function(){var position,current;//当前待排序的元素for (var i = 1; i < arr.length; i++) {if (arr[i]<arr[i...
基本思路:先以前两个数据为基础,将后面的元素依次取出来插进去。升序就是值从小->大,降序就是值从大->小。代码:void CArrayArithDlg::InsertSort(int nArray[],int nLength){int nInsert=0,nIndex=0;for (int i=1;i<nLength;i++){nInsert=nArray[i]; //每次取数组中的一个值,将此值插进合适出nIndex=i-1;while(nIndex>=0 && nInsert<nArray[nIndex])//升序,如果前面的值大,则将此值后移{nArray[nIndex+1]=nArray[nIndex];nI...
1、堆排序的堆,其实是一个 完全二叉树。既是一个结点要么是叶子结点,要么必定有左右两个子节点的树。2、堆有序:每个结点的值,都必须大于两个子节点。但是两个子结点的大小不作要求。3、一棵大小为N的完全二叉树,高度为lgN(层)。 用数组实现堆,假设数组下标从0开始,下标为k的元素,它的左子树是2k+1,右子树是左子树+1,即2k+2 一:由上至下的有序化(下沉)如果堆的有序状态,因为某个结点比它的两个子结点或者其中之一小...
一、将各种数据排序只要实现了Comparable接口的数据类型就可以被排序。但要使算法能够灵活地用不同字段进行排序,则是后续需要考虑的问题。1、指针排序在Java中,指针操作是隐式的,排序算法操作的总是数据引用,而不是数据本身。 2、键不可变如果在排序后,用例还可以改变键值,那么数组很可能就不是有序的了。类似,优先队列也会乱套。Java中,可以用不可变数据类型作为键来避免这个问题,如String,Integer,Double和File都是不...
排序算法说明1.1 排序的定义: 对一序列对象根据某个关键字进行排序。1.2 属于说明:稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;内排序:所有排序操作都在内存中完成;外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;时间复杂度: 一个算法执行所耗费的时间。空间复杂度:运行完一个程序所需内存的大小。...
// 快速排序算法:关键在于定义基准元素,头尾元素与基准元素对比,定义头尾元素下标,头小右移,头大停止,尾大左移,尾小停止,头大尾小元素交换function partition(arr, startIndex, endIndex) {var pivot = arr[startIndex];var left = startIndex;var right = endIndex;while (left != right) {while (left < right && arr[right] > pivot) {right--;}while (left < right && arr[left] <= pivot) {left++;}if (left < right)...
/* Date:2014.12.14 希尔排序思路:基于插入排序的思想。 流程:1).将有 n 个元素的数组分成 n/2 对,第1个数据和第(n/2 + 1)个数据为一对,依次配对; 2).一次循环使每一个序列对排好顺序; 3).再分为 n/4 对进行排序; 4).重复操作,随序列对数的减少最后变为1个,就完成了整个序列的排序。 时间复杂度:最差(O(ns) 1<s<2),平均O(nlogn). 空间复杂度:O(1). 是一种 不稳定 的排序算法. */ ...
内部排序 -插入排序 -直接插入排序 -折半插入排序 -希尔排序 -交换排序 -冒泡排序 -快速排序 -选择排序 -简单选择排序 -堆排序 -归并排序 -基数排序外部排序 -多路归并排序 1.直接插入排序 算法思路:每次将一个待排序的记录按其关键字大小插入到前面已排好序的子序列中,指导全部记录插入完成。 性能分析: 空间复杂度O(1) 时间...
1package sorting;2 3/** 4 * 基数排序5 * 平均O(d(n+r)),最好O(d(n+r)),最坏O(d(n+r));空间复杂度O(n+r);稳定;较复杂6 * d为位数,r为分配后链表的个数7 * @author zeng8 *9*/10publicclass JishuPaixu { 1112publicstaticint getNumInPos(int num, int pos) { 13int tmp = 1; 14for (int i = 0; i < pos - 1; i++) { 15 tmp *= 10; 16 } 17return (num / tmp) % 10; 18 } 1920publicstaticint getMaxWeishu...
基本思想冒泡排序的基本思想是: 通过对待排序的序列从前向后依次比较相邻元素的值,如果发现逆序则交换。 逆序的含义:如果想把序列从小到大排序,那么两个数中前面的比后面的大就是逆序。 若需求是将序列从小到大排序,那么每一趟比较都会把值较大的逐渐从前面移动到后面。 就像水底的泡泡一样: (如下图,图片来源于网络)例子给定一个数组如下: [ 5 , 8 , -2 , 20 -6 ] 定义两个变量 i 和 j,初始状态 i 存第一个元素的索引,...
插入排序:从元素的第二个值开始 假设第一个值是排序完成的队列,每次向排序好的队列中插入值得时候都由后往前,直到找到自己应该在得位置publicstaticvoid compare2(int[] arr) {for (int i = 1; i < arr.length; i++) {int current = arr[i];int perIndex = i - 1;while (perIndex >= 0 && current < arr[perIndex]) {arr[perIndex + 1] = arr[perIndex];perIndex--;}arr[perIndex + 1] = current;}for (int i = 0; i < arr.leng...
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;}}}}插入排序思想:每次从后边获取一个元素,与前边已排好序...
前言博主最近在恶补基础知识,算法必然是必不可少的,那么就从经典排序算法开始吧!(图源网络,侵删),没有列出全部,因为在期末考试囧代码太多,就只显示了最关键的部分1. 冒泡排序 实现思路: (1)比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换。 (2)这样对数组的第0个数据到N-1个数据进行一次遍历后,最大的一个数据就“沉”到数组第 N-1个位置。 (3)N=N-1,如果N不为 0就重复前面二步,否则排...
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...