JAVA堆排序和几种排序方法实现代码
java稳定的排序方法

java稳定的排序方法
Java是一种广泛使用的编程语言,其中排序是常见的操作。
在排序中,稳定性是一个重要的概念。
稳定的排序算法可以保留相等元素的原始顺序,而不稳定的排序算法不保证这一点。
下面介绍几种Java中稳定的排序方法:
1. 冒泡排序:该算法的基本思想是通过交换相邻的元素来将较大的元素逐步“冒泡”到数组的末尾。
冒泡排序是一种简单但效率较低的排序算法,时间复杂度为O(n^2)。
2. 插入排序:该算法的基本思想是将数组分为有序和无序两部分,从无序部分依次取出一个元素插入到有序部分的适当位置。
插入排序的时间复杂度也是O(n^2),但在实际应用中,它比冒泡排序更常用。
3. 归并排序:该算法的基本思想是将待排序数组分成两个子数组,并将每个子数组递归地进行排序,然后再将它们合并成一个有序数组。
归并排序的时间复杂度为O(nlogn),但它需要额外的空间来存储子数组。
4. 堆排序:该算法的基本思想是将待排序数组构建为一个最大堆(或最小堆),然后不断取出堆顶元素并重新调整堆,直到所有元素都被取出。
堆排序的时间复杂度为O(nlogn),但也需要额外的空间来存储堆。
总的来说,以上排序方法都是稳定的。
在实际应用中,我们需要根据数据规模、数据类型和性能需求等因素来选择适当的排序算法。
java倒序排序方法

java倒序排序方法java语言是一种面向对象的编程语言,具有强大的排序功能。
在java中,倒序排序是非常常见的操作,有多种实现方法。
一、使用Collections.reverseOrder()方法java中的Collections类提供了reverseOrder()方法,可以用于倒序排序,该方法返回一个比较器,可以将一个对象列表按照指定的顺序进行排序。
示例代码如下所示:```javaimport java.util.ArrayList;import java.util.Collections;import java.util.List;public class ReverseSortExample {public static void main(String[] args) {List<Integer> numbers = new ArrayList<>();numbers.add(5);numbers.add(2);numbers.add(9);numbers.add(1);numbers.add(7);System.out.println("排序前:" + numbers); Collections.sort(numbers, Collections.reverseOrder()); System.out.println("排序后:" + numbers);}}```输出结果如下所示:```排序前:[5, 2, 9, 1, 7]排序后:[9, 7, 5, 2, 1]```在这个示例中,我们创建了一个包含一些整数的列表,并使用Collections类的sort()方法对其进行排序。
通过传递`Collections.reverseOrder()`作为比较器参数,可以实现倒序排序。
值得注意的是,reverseOrder()方法返回的是一个比较器,它会根据元素的自然顺序进行排序。
arrays.sort();的多种使用方法

arrays.sort();的多种使用方法(原创版4篇)目录(篇1)1.引言2.`arrays.sort()`函数的基本用法3.`arrays.sort()`函数的多种使用方法4.结论正文(篇1)数组的排序在现代编程中是常见的操作。
Java的`arrays.sort()`函数提供了一种方便的方式来对数组进行排序。
它具有多种使用方法,能够满足不同类型和规模数组的排序需求。
以下是`arrays.sort()`函数的多种使用方法。
1.数组元素的直接比较排序t* 这是`arrays.sort()`函数的基本用法,它通过比较数组元素的值来进行排序。
t* 例如,对于一个整型数组,可以使用以下代码进行排序:t```tarduino`int[] arr = {5, 2, 8, 1, 9};tArrays.sort(arr); // 按照从小到大的顺序对数组进行排序`t```2.使用自定义的比较器进行排序t* 如果需要按照自定义的规则进行排序,可以使用`Arrays.sort()`函数的第二个参数,即自定义的比较器。
t* 比较器是一个函数,它接受两个参数,并返回一个整数值表示它们的相对顺序。
t* 例如,对于一个字符串数组,可以使用以下代码进行排序:t```tarduino`String[] arr = {"apple", "banana", "orange", "grape"};tArrays.sort(arr, new Comparatoru003cStringu003e() {t @Overridet public int compare(String s1, String s2) {t return s1.length() - s2.length(); // 按长度排序` t});`t```3.使用自定义的排序算法进行排序t* 如果需要使用自定义的排序算法进行排序,可以使用`Arrays.sort()`函数的第三个参数,即自定义的比较器。
java的几种排序方式

java的几种排序方式用Java语言实现的各种排序,包括插入排序、冒泡排序、选择排序、Shell排序、快速排序、归并排序、堆排序、SortUtil等。
插入排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;/*** @author treeroot* @since 2006-2-2* @version 1.0*/public class InsertSort implements SortUtil.Sort{/* (non-Javadoc)* @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])*/public void sort(int[] data) {int temp;for(int i=1;i for(int j=i;(j>0)&&(data[j] SortUtil.swap(data,j,j-1);}}}}冒泡排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;/*** @author treeroot* @since 2006-2-2* @version 1.0*/public class BubbleSort implements SortUtil.Sort{/* (non-Javadoc)* @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])*/public void sort(int[] data) {int temp;for(int i=0;i for(int j=data.length-1;j>i;j--){if(data[j] SortUtil.swap(data,j,j-1);}}}}}选择排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;/*** @author treeroot* @since 2006-2-2* @version 1.0*/public class SelectionSort implements SortUtil.Sort { /** (non-Javadoc)** @see org.rut.util.algorithm.SortUtil.Sort#sort(int[]) */public void sort(int[] data) {int temp;for (int i = 0; i < data.length; i++) {int lowIndex = i;for (int j = data.length - 1; j >i; j--) {if (data[j] < data[lowIndex]) {lowIndex = j;}}SortUtil.swap(data,i,lowIndex);}}}Shell排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;/*** @author treeroot* @since 2006-2-2* @version 1.0*/public class ShellSort implements SortUtil.Sort{/* (non-Javadoc)* @see org.rut.util.algorithm.SortUtil.Sort#sort(int[]) */public void sort(int[] data) {for(int i=data.length/2;i>2;i/=2){for(int j=0;j insertSort(data,j,i);}}insertSort(data,0,1);/*** @param data* @param j* @param i*/private void insertSort(int[] data, int start, int inc) {int temp;for(int i=start+inc;i for(int j=i;(j>=inc)&&(data[j] SortUtil.swap(data,j,j-inc); }}}}快速排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;/*** @author treeroot* @since 2006-2-2* @version 1.0*/public class QuickSort implements SortUtil.Sort{/* (non-Javadoc)* @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])*/public void sort(int[] data) {quickSort(data,0,data.length-1);}private void quickSort(int[] data,int i,int j){int pivotIndex=(i+j)/2;//swapSortUtil.swap(data,pivotIndex,j);int k=partition(data,i-1,j,data[j]);SortUtil.swap(data,k,j);if((k-i)>1) quickSort(data,i,k-1);if((j-k)>1) quickSort(data,k+1,j);}/*** @param data* @param i* @param j* @return*/private int partition(int[] data, int l, int r,int pivot) {while(data[++l] while((r!=0)&&data[--r]>pivot);SortUtil.swap(data,l,r);}while(l SortUtil.swap(data,l,r);return l;}}改进后的快速排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;/*** @author treeroot* @since 2006-2-2* @version 1.0*/public class ImprovedQuickSort implements SortUtil.Sort { private static int MAX_STACK_SIZE=4096;private static int THRESHOLD=10;/* (non-Javadoc)* @see org.rut.util.algorithm.SortUtil.Sort#sort(int[]) */public void sort(int[] data) {int[] stack=new int[MAX_STACK_SIZE];int top=-1;int pivot;int pivotIndex,l,r;stack[++top]=0;stack[++top]=data.length-1;while(top>0){int j=stack[top--];int i=stack[top--];pivotIndex=(i+j)/2;pivot=data[pivotIndex];SortUtil.swap(data,pivotIndex,j);//partitionl=i-1;r=j;do{while(data[++l] while((r!=0)&&(data[--r]>pivot)); SortUtil.swap(data,l,r);}while(l SortUtil.swap(data,l,r);SortUtil.swap(data,l,j);if((l-i)>THRESHOLD){stack[++top]=i;stack[++top]=l-1;}if((j-l)>THRESHOLD){stack[++top]=l+1;stack[++top]=j;}}//new InsertSort().sort(data);insertSort(data);}/*** @param data*/private void insertSort(int[] data) {int temp;for(int i=1;i for(int j=i;(j>0)&&(data[j] SortUtil.swap(data,j,j-1); }}}}归并排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;/*** @author treeroot* @since 2006-2-2* @version 1.0*/public class MergeSort implements SortUtil.Sort{/* (non-Javadoc)* @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])*/public void sort(int[] data) {int[] temp=new int[data.length];mergeSort(data,temp,0,data.length-1);}private void mergeSort(int[] data,int[] temp,int l,int r){int mid=(l+r)/2;if(l==r) return ;mergeSort(data,temp,l,mid);mergeSort(data,temp,mid+1,r);for(int i=l;i<=r;i++){temp=data;}int i1=l;int i2=mid+1;for(int cur=l;cur<=r;cur++){if(i1==mid+1)data[cur]=temp[i2++];else if(i2>r)data[cur]=temp[i1++];else if(temp[i1] data[cur]=temp[i1++];elsedata[cur]=temp[i2++];}}}改进后的归并排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;/*** @author treeroot* @since 2006-2-2* @version 1.0*/public class ImprovedMergeSort implements SortUtil.Sort { private static final int THRESHOLD = 10;/** (non-Javadoc)** @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])*/public void sort(int[] data) {int[] temp=new int[data.length];mergeSort(data,temp,0,data.length-1);}private void mergeSort(int[] data, int[] temp, int l, int r) { int i, j, k;int mid = (l + r) / 2;if (l == r)return;if ((mid - l) >= THRESHOLD)mergeSort(data, temp, l, mid);elseinsertSort(data, l, mid - l + 1);if ((r - mid) >THRESHOLD)mergeSort(data, temp, mid + 1, r);elseinsertSort(data, mid + 1, r - mid);for (i = l; i <= mid; i++) {temp = data;}for (j = 1; j <= r - mid; j++) {temp[r - j + 1] = data[j + mid];}int a = temp[l];int b = temp[r];for (i = l, j = r, k = l; k <= r; k++) {if (a < b) {data[k] = temp;a = temp;} else {data[k] = temp[j--];b = temp[j];}}}/*** @param data* @param l* @param i*/private void insertSort(int[] data, int start, int len) {for(int i=start+1;i for(int j=i;(j>start) && data[j] SortUtil.swap(data,j,j-1); }}}}堆排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;/*** @author treeroot* @since 2006-2-2* @version 1.0*/public class HeapSort implements SortUtil.Sort{/* (non-Javadoc)* @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])public void sort(int[] data) {MaxHeap h=new MaxHeap();h.init(data);for(int i=0;i h.remove();System.arraycopy(h.queue,1,data,0,data.length); }private static class MaxHeap{void init(int[] data){this.queue=new int[data.length+1];for(int i=0;i queue[++size]=data;fixUp(size);}}private int size=0;private int[] queue;public int get() {return queue[1];}public void remove() {SortUtil.swap(queue,1,size--);fixDown(1);}//fixdownprivate void fixDown(int k) {int j;while ((j = k << 1) <= size) {if (j < size && queue[j] j++;if (queue[k]>queue[j]) //不用交换break;SortUtil.swap(queue,j,k);k = j;}}private void fixUp(int k) {while (k >1) {int j = k >>1;if (queue[j]>queue[k])break;SortUtil.swap(queue,j,k);k = j;}}}SortUtil:package org.rut.util.algorithm;import org.rut.util.algorithm.support.BubbleSort;import org.rut.util.algorithm.support.HeapSort;import org.rut.util.algorithm.support.ImprovedMergeSort;import org.rut.util.algorithm.support.ImprovedQuickSort;import org.rut.util.algorithm.support.InsertSort;import org.rut.util.algorithm.support.MergeSort;import org.rut.util.algorithm.support.QuickSort;import org.rut.util.algorithm.support.SelectionSort;import org.rut.util.algorithm.support.ShellSort;/*** @author treeroot* @since 2006-2-2* @version 1.0*/public class SortUtil {public final static int INSERT = 1;public final static int BUBBLE = 2;public final static int SELECTION = 3;public final static int SHELL = 4;public final static int QUICK = 5;public final static int IMPROVED_QUICK = 6;public final static int MERGE = 7;public final static int IMPROVED_MERGE = 8;public final static int HEAP = 9;public static void sort(int[] data) {sort(data, IMPROVED_QUICK);}private static String[] name={"insert", "bubble", "selection", "shell", "quick", "improved_quick", "merge", "improved_merge", "heap"};private static Sort[] impl=new Sort[]{new InsertSort(),new BubbleSort(),new SelectionSort(),new ShellSort(),new QuickSort(),new ImprovedQuickSort(),new MergeSort(),new ImprovedMergeSort(),new HeapSort()public static String toString(int algorithm){return name[algorithm-1];}public static void sort(int[] data, int algorithm) { impl[algorithm-1].sort(data);}public static interface Sort {public void sort(int[] data);}public static void swap(int[] data, int i, int j) { int temp = data;data = data[j];data[j] = temp;}}。
java arraylist排序方法

java arraylist排序方法Java中的ArrayList是一种动态数组,它可以根据需要自动调整大小。
有时,我们需要对ArrayList中的元素进行排序,以便更好地进行数据处理。
在本文中,我们将介绍几种Java中ArrayList排序的方法。
1. 使用Collections.sort()方法Collections.sort()方法可用于对ArrayList进行排序。
该方法使用默认排序顺序对列表中的元素进行排序。
示例代码:```import java.util.ArrayList;import java.util.Collections;public class ArrayListSortingExample {public static void main(String[] args) {ArrayList<String> fruitsList = new ArrayList<String>(); fruitsList.add('Apple');fruitsList.add('Orange');fruitsList.add('Banana');fruitsList.add('Pineapple');fruitsList.add('Kiwi');// Sort the ArrayListCollections.sort(fruitsList);// Print the sorted ArrayListSystem.out.println('Sorted ArrayList: ');for (String fruit : fruitsList) {System.out.println(fruit);}}}```输出结果:```Sorted ArrayList:AppleBananaKiwiOrangePineapple```2. 使用自定义比较器进行排序如果我们需要使用自定义排序顺序对ArrayList中的元素进行排序,我们可以使用Comparator接口和Collections.sort()方法的重载版本。
java中sort方法

java中sort方法Java中sort方法1. 简介在Java中,sort方法是用于对数组或集合进行排序的常用方法。
它可以按照自然顺序或者指定的比较器来排序,使得元素按照一定的规则排列。
本文将详细介绍sort方法的用法和不同的排序方式。
2. 使用方法public static <T> void sort(List<T> list)public static <T> void sort(List<T> list, Comparator<? s uper T> c)public static void sort(int[] a)public static void sort(int[] a, int fromIndex, int toIn dex)public static void sort(long[] a)public static void sort(long[] a, int fromIndex, int toI ndex)public static void sort(short[] a)public static void sort(short[] a, int fromIndex, int to Index)public static void sort(char[] a)public static void sort(char[] a, int fromIndex, int toI ndex)public static void sort(byte[] a)public static void sort(byte[] a, int fromIndex, int toI ndex)public static void sort(float[] a)public static void sort(float[] a, int fromIndex, int to Index)public static void sort(double[] a)public static void sort(double[] a, int fromIndex, int t oIndex)public static <T> void sort(T[] a)public static <T> void sort(T[] a, int fromIndex, int to Index)sort方法有多个重载。
十大排序算法

⼗⼤排序算法算法之排序排序算法基本上是我们⽆论是在项⽬中还是在⾯试中都会遇到的问题,加上最近在看《算法》这本书,所以就准备好好的将排序算法整理⼀下。
所有排序算法都是基于 Java 实现,为了简单,只使⽤了int类型,从⼩到⼤排序基本排序⾼效的排序各⼤排序的时间测试如何选择排序排序之基本排序算法准备阶段:有⼀个交换位置的函数exc/*** 交换a数组中i和j的位置* @param a 需要交换的数组* @param i 位置* @param j 位置*/public static void exc(int a[],int i,int j){// 当他们相等的时候就没必要进⾏交换if(a[i] != a[j]){a[i] ^= a[j];a[j] ^= a[i];a[i] ^= a[j];}}基本排序算法主要是分为插⼊排序,选择排序,冒泡排序和梳排序。
选择排序原理:选择排序的原理很简单,就是从需要排序的数据中选择最⼩的(从⼩到⼤排序),然后放在第⼀个,选择第⼆⼩的放在第⼆个……代码:/*** 选择排序* @param a 进⾏排序的数组*/public static int[] selectionSort(int a[]){int min;for(int i=0;i<a.length;i++){min = i;// 这个for循环是为了找出最⼩的值for (int j = i+1; j < a.length; j++) {if(a[min]>a[j]){min = j;}}/** 如果第⼀个取出的元素不是最⼩值,就进⾏交换* 意思就是:如果取出的元素就是最⼩值,那么就没有必要进⾏交换了 */if(min != i){// 进⾏交换exc(a, i, min);}}return a;}选择排序的动画演⽰img假如数组的长度是N,则时间复杂度:进⾏⽐较的次数:(N-1)+(N-2)+……+1 = N(N-1)/2进⾏交换的次数:N特点:(稳定)1. 运⾏时间与输⼊⽆关。
用Java实现常见的8种内部排序算法

⽤Java实现常见的8种内部排序算法⼀、插⼊类排序插⼊类排序就是在⼀个有序的序列中,插⼊⼀个新的关键字。
从⽽达到新的有序序列。
插⼊排序⼀般有直接插⼊排序、折半插⼊排序和希尔排序。
1. 插⼊排序1.1 直接插⼊排序/*** 直接⽐较,将⼤元素向后移来移动数组*/public static void InsertSort(int[] A) {for(int i = 1; i < A.length; i++) {int temp = A[i]; //temp ⽤于存储元素,防⽌后⾯移动数组被前⼀个元素覆盖int j;for(j = i; j > 0 && temp < A[j-1]; j--) { //如果 temp ⽐前⼀个元素⼩,则移动数组A[j] = A[j-1];}A[j] = temp; //如果 temp ⽐前⼀个元素⼤,遍历下⼀个元素}}/*** 这⾥是通过类似于冒泡交换的⽅式来找到插⼊元素的最佳位置。
⽽传统的是直接⽐较,移动数组元素并最后找到合适的位置*/public static void InsertSort2(int[] A) { //A[] 是给定的待排数组for(int i = 0; i < A.length - 1; i++) { //遍历数组for(int j = i + 1; j > 0; j--) { //在有序的序列中插⼊新的关键字if(A[j] < A[j-1]) { //这⾥直接使⽤交换来移动元素int temp = A[j];A[j] = A[j-1];A[j-1] = temp;}}}}/*** 时间复杂度:两个 for 循环 O(n^2)* 空间复杂度:占⽤⼀个数组⼤⼩,属于常量,所以是 O(1)*/1.2 折半插⼊排序/** 从直接插⼊排序的主要流程是:1.遍历数组确定新关键字 2.在有序序列中寻找插⼊关键字的位置* 考虑到数组线性表的特性,采⽤⼆分法可以快速寻找到插⼊关键字的位置,提⾼整体排序时间*/public static void BInsertSort(int[] A) {for(int i = 1; i < A.length; i++) {int temp = A[i];//⼆分法查找int low = 0;int high = i - 1;int mid;while(low <= high) {mid = (high + low)/2;if (A[mid] > temp) {high = mid - 1;} else {low = mid + 1;}}//向后移动插⼊关键字位置后的元素for(int j = i - 1; j >= high + 1; j--) {A[j + 1] = A[j];}//将元素插⼊到寻找到的位置A[high + 1] = temp;}}2. 希尔排序希尔排序⼜称缩⼩增量排序,其本质还是插⼊排序,只不过是将待排序列按某种规则分成⼏个⼦序列,然后如同前⾯的插⼊排序⼀般对这些⼦序列进⾏排序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
* @param end
*
结束位置
*/
private static void quickDeal(int[] array, int begin, int end,int method) {
if (end > begin) {
int pos = begin + (int) (Math.random() * (end - begin + 1)); // 计算分隔位置
public static int[] quickOrder(int[] array, int method) {
quickDeal(array,0,array.length - 1,method); return array;
}
/**
*
* @param array
* @param begin
*
开始位置
for (int i = 0; i < orderarray.length; i++) { System.out.println(orderarray[i]);
} }
/**
* 取随机数据,初始化一个数组
*
* @param min
*
随机数的最小值
* @param max
*
最大值
* @param size
位置的值时移动 array[j + 1] = tmp; //插入排序值
} } else if (method == 2) {
if (array[i - 1] < array[i]) { int tmp = array[i]; int j = i - 1; do { array[j + 1] = array[j]; j--; } while (j >= 0 && tmp > array[j]); array[j + 1] = tmp;
for (int i = 1; i < array.length; i++) { if (method == 1) { if (array[i - 1] > array[i]) { int tmp = array[i]; // int j = i - 1; do { array[j + 1] = array[j]; j--; } while (j >= 0 && tmp < array[j]); //当 j>=0 并且 当前值大于数据中 j
}
}
/** * 插入排序方法 * 排序原理:抽出一个数,做为排序基序列,然后依次抽出其它数与,与此序列中的
数进行比较,放入合适的位置
* @param array * @param method * @return */ public static int[] insertOrder(int[] array, int method) {
}
/** * 交换值,交换数组的两个值 * @param array * @param i * @param j */
private static void swap(int[] array,int i, int j) {
int tmp = array[i]; array[i] = array[j]; array[j] = tmp; }
} } return array; }
/** * 双向冒泡排序 * 原理:类似于冒泡排序,只不过是双向的 * @param array * @param method * @return */
public static int[] doubleBubbleOrder(int[] array,int method) {
各种排序方法的实现
import ng.Math; import java.util.Random;
/** * 排序 * * @author javajack */
public class OrderTest {
public static void main(String args[]) { OrderTest.ExecOrder(2);
while(j <= n-1) {
if(j < n-1 && a[j] < a[j+1])
j++;
if(temp >= a[j]) break;
a[(j-1)/2] = a[j];
j = 2 * j + 1; }
a[(j-1)/2] = temp; }
public static void Display(int[] a, String str) {
/**
*
* @param method
*
1 为升序,2 为降序
*/
public static void ExecOrder(int method) {
int[] array = null;
array = initArray(10, 210, 10);
//int[] orderarray = bubbleOrder(array,method); int[] orderarray = doubleBubbleOrder(array,method); //int[] orderarray = insertOrder(array, method); //int [] orderarray = quickOrder(array,method); //int[] orderarray = selectOrder(array, method);
int n = a.length; int temp = 0;
Display(a, "Before sort : ");
for(int i=n/2; i>0; i--) Adjust(a, i-1, n);
for(int i=n-2; i>=0; i--) {
temp = a[i+1]; a[i+1] = a[0]; a[0] = temp;
也就是向前移动
swap(array,pos,i);
pos++; //移动后 pos 增 1
}
}
}
swap(array,pos,end); //end 位置的值前移
quickDeal(array,begin,pos -1,method);
quickDeal(array,pos+1,end,method);
} return init; }
/** * 交换排序方法 * 原理:依次交换值 * @param array * @return */
public static int[] convertOrder(int[] array, int method) { for (int i = 0; i < array.length; i++) { for (int j = i + 1; j < array.length; j++) { if (method==2) { if (array[i] < array[j]) swap(array,i,j); }else if (method == 1) { if (array[i] > array[j]) swap(array,i,j);
System.out.println(str);
for(int i=0; i<a.length; i++) System.out.print(a[i] + " ");
System.out.println(); } }
输出结果为:
Before sort : 26 5 77 1 61 11 59 15 48 19 After sort : 1 5 11 15 19 26 48 59 61 77
int left = 0; int right = array.length -1 ; while (left < right) {
for(int i=left;i<=right;i++)
{ if (method==1) { if (array[left] > array[i]) swap(array,left,i); }else { if (array[left] < array[i]) swap(array,left,i); }
for(int i=0;i<array.length;i++) {
for (int j=array.length -1 ;j>i;j--) {
if (method==2) {
if (array[i] < array[j]) swap(array,i,j);
}else if (method==1) if (array[i] > array[j]) swap(array,i,j);
} } left++; right--; } return array; }
/** * 快速排序方法,运用到递归 * 排序原理:随机找到一个值,然后以此值大小进行分为两个数组,大的放左边,小
的放右边, * 然后再对左右两侧的数据依次排序根据 * @param array * @param method * @return */
堆排序(1)
public class HeapSort {
public static void main(String[] args) {
int[] a = {26, 5, 77, 1, 61, 11, 59, 15, 48, 19};
Sort(a); }