一、交换排序
//冒泡排序 static void sort_bubble(int[] a) { int temp=0; for(int i=0;i<a.Length-1;i++){ for(int j=i+1;j<a.Length;j++){ if(a[i]>a[j]){ temp = a[i]; a[i] = a[j]; a[j] = temp; } } } }
//快速排序 static int sourtUnit(int[] array, int low, int hight) { int key = array[low]; while (low < hight) { while (low < hight && array[hight] > key) hight--; array[low] = array[hight]; while (low < hight && array[low] < key) low++; array[hight] = array[low]; } array[low] = key; return low; } static void sort(int[] array, int low, int hight) { if (low < hight) { //print(array); int index = sourtUnit(array, low, hight); sort(array, low, index - 1); sort(array, index + 1, hight); } }
二、选择排序
//选择排序 static void sort_choice(int[] a) { int index = 0,temp=0; for (int i = 0; i < a.Length - 1; i++) { index = i; for (int j = i + 1; j < a.Length; j++) { if (a[index] > a[j]) index = j; } if (index != i) { temp = a[i]; a[i] = a[index]; a[index] = temp; } // print(a); } }
//堆排序 static void InitHeap(int[] a, int index,int length) { int left = 2 * index + 1; int right = 2 * index + 2; int max=index; if (index < length / 2) { if (left < length && a[max] < a[left]) max = left; if (right < length && a[max] < a[right]) max = right; if (max != index) { int temp = a[index]; a[index] = a[max]; a[max] = temp; InitHeap(a, max,length); } } } // int[] c = getArray(100); print(c); for (int i = c.Length / 2 - 1; i >= 0; i--) { InitHeap(c, i,c.Length); } //然后倒序交换 for (int i = c.Length - 1; i >= 0; i--) { int temp = c[0]; c[0] = c[i]; c[i] = temp; InitHeap(c, 0, i); } print(c);
三、插入排序
//直接插入排序 static void sort_insert(int[] a) { int index = 0, temp = 0; for (int i = 1; i < a.Length; i++) { index = i; temp = a[i]; while (index > 0 && a[index - 1] > temp) { a[index] = a[index - 1]; index--; } a[index] = temp; } }
//希尔排序 static void sort_shell_insert(int[] a) { int length = a.Length; int interval = length / 2; while (interval != 0) { for (int i = interval; i < length; i++) { int t = a[i]; int j = i - interval; while (j >= 0 && t < a[j]) { a[j + interval] = a[j]; j = j - interval; } a[j + interval] = t; } interval /= 2; } }
四、基数排序
public static void baseSort(int[] a,int d){ //创建一个二维数组 int [][]temp=new int[10][a.length]; int[] length=new int[a.length]; //循环次数 int div=1;//除数 int m=0;//控制循环次数 int k=0;//赋值的时候变量 //d循环次数最大数的位数 while(m<d){ for(int i=0;i<a.length;i++){ int lsd=(a[i]/div)%10; temp[lsd][length[lsd]]=a[i]; length[lsd]++; } for(int i=0;i<10;i++){ if(length[i]!=0){ for(int j=0;j<length[i];j++) a[k++]=temp[i][j]; } length[i]=0; } System.out.println(Arrays.toString(a)); m++; div*=10; k=0; } }
相关推荐
冒泡,插入,选择排序基本算法,注释清晰,理解算法思想,简单易懂。
数据结构中关于排序的算法 上传的是快速排序的一些算法 这种算法效率高 但是最坏的时间最大
排序及基本算法
该程序包含7大排序算法: # sort.bubbleSort() #冒泡排序 # sort.shellSort() #希尔排序 # sort.insertionSort() #插入排序 # sort.Selectionsort1() #选择排序 # sort.heapSort() #堆排序 # sort.countSort() ...
。。。
。。。
1、快速排序的基本思想 2、单处理机上快速排序算法 3、快速排序算法的性能 4、快速排序算法并行化 5、描述了使用2m个处理器完成对n个输入数据排序的并行算法。 6、在最优的情况下并行算法形成一个高度为logn的排序...
排序算法是一种基本并且常用的算法。由于实际工作中处理的数量巨大,所以排序算法 对算法本身的速度要求很高。 而一般我们所谓的算法的性能主要是指算法的复杂度,一般用O方法来表示。在后面我将 给出详细的说明...
8种基本排序算法2015上
冒泡排序基本思想和算法冒泡排序基本思想和算法
排序算法是《数据结构与算法》中最基本的算法之一。 排序算法可以分为内部排序和外部排序,内部排序是数据记录在内存中 进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序 记录,在排序过程中需要...
里面有插入、快速、希尔、归并、选择、冒泡(也含有双向冒泡)、堆排序算法(C语言算法),对一些初学者有帮助。里面还有一些基于链表的排序算法。
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
基本排序算法比较与选择 冒泡排序 快速排序 直接选择排序 堆排序 直接插入排序 希尔排序 归并排序 基数排序
java实现的常用的几种基本排序算法,插入、交换、选择、归并
从排序的基本概念讲起,详细讲解了插入排序、交换排序、选择排序、归并排序等排序算法的原理以及实现代码
几种基本排序算法的运行时间比较 /* *Copyright dongbo *All rights reserved. * *文件名称: 基本排序实现 *功 要: 实现 直接插入排序;简单排序 ;冒泡排序 ;快速排序 及所用时间比较 * *当前版本: 1.0 */
排序的基本概念以及其算法的种类,介绍几种常见的排序算法的算法:冒泡排序、选择排序、插入排序、归并排序、快速排序、希尔排序的算法和分析它们各自的复杂度,然后以表格的形式,清晰直观的表现出它们的复杂度的...
各种常用排序算法的C语言实现,摘自严蔚敏《数据结构》。
快速排序优化算法纯c实现,对大于k的部分应用快速排序,最后对基本有序数列应用插入排序。