四种基本的排序方法:冒泡排序,选择排序,插入排序,快速排序
2016-10-21 10:25
357 查看
排序的方法有:冒泡排序,选择排序,插入排序,快速排序
快速排序法:
冒泡排序算法
选择排序的代码
插入排序的代码
排序的方法有:冒泡排序,选择排序,插入排序,快速排序
快速排序法:
package quick; import java.util.Random; public class QuickSort { /* * 步骤: * 1、取一随机位置的元素作为基准(pivot,或叫枢纽) * 2、将基准移到最后位置(方便数组的其它元素与之比较),将小于此基准的元素放到数组的前面,然后将基准移到所有比它小的元素的最大序号的下一个位置。 * 3、将这个基准的新位置返回,并作为迭代的分割点。 * 4、迭代比基准的前面、后面两个部分。 */ private Randomrandom =new Random(); /* 交换 */ public void swap(int[] array, int i,int j){ int temp = array[i]; array[i] = array[j]; array[j] = temp; } /*查找枢纽的索引号 */ public int getPivotIndex(int[] array, int begin,int end){ int index = begin + random.nextInt(end-begin+1); int pivot = array[index]; //把pivot换到最后 swap(array, index, end); for(int i=index=begin; i < end; i++){ if(array[i] < pivot){ swap(array, index++, i); //index从0开始计算了,记录小于pivot的值 //将小于pivot的值的元素移动到index位置 } } swap(array, index, end); //将pivot放到所有比它小的元素的下一个位置(即此时的index位置)。 return index; } /* * 快速排序法(Divide and conquer) * @param array 待排序的数据 * @param begin 开始序号 * @param end 最后一个元素的序号 */ public void quickSort(int[] array, int begin,int end){ if(end > begin){ int index = getPivotIndex(array, begin, end); quickSort(array, begin, index-1); quickSort(array, index+1, end); } } public static void main(String[] args) { int [] array = {3, 1, 7, 5, 2, 9, 10, 4, 8, 6}; QuickSort sort =new QuickSort(); sort.quickSort(array, 0, array.length-1); //输出 for(int val : array){ System.out.println(val); } } }
冒泡排序算法
public class TestBubbleSort { public static void sort(int[] a) { int temp = 0; // 外层循环,它决定一共走几趟 for (int i = 0; i <a.length-1; ++i) { //内层循环,它决定每趟走一次 for (int j = 0; j <a.length-i-1 ; ++j) { //如果后一个大于前一个 if (a[j + 1] < a[j]) { //换位 temp = a[j];a[j] = a[j + 1];a[j + 1] = temp; } } } } }
选择排序的代码
public class TestSelectSort { public static void sort(int arr[]) { int temp = 0; for (int i = 0; i < arr.length - 1; i++) { // 认为目前的数就是最小的, 记录最小数的下标 int minIndex = i; for (int j = i + 1; j < a 4000 rr.length; j++) { if (arr[minIndex] > arr[j]) { // 修改最小值的下标 minIndex = j; } } // 当退出for就找到这次的最小值 if (i != minIndex) { temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } } } }
插入排序的代码
public class TestInsertSort { public static void sort(int arr[]) { int i, j; for (i = 1; i < arr.length; i++) { int temp = arr[i]; for (j = i; j > 0 && temp < arr[j - 1]; j--) { arr[j] = arr[j - 1]; } arr[j] = temp; } } }
相关文章推荐
- 常见排序方法(冒泡排序、选择排序、插入排序、希尔排序和快速排序)
- PHP四种基础算法详解(冒泡排序、选择排序、插入排序、快速排序)
- Go语言实现冒泡排序、选择排序、快速排序及插入排序的方法
- 排序--选择排序,插入排序,冒泡排序,shell排序,快速排序(递归,迭代,改进版本),归并排序
- 8 排序--选择排序,插入排序,冒泡排序,shell排序,快速排序(递归,迭代,改进版本),归并排序
- 三种最基本的排序 选择排序 插入排序 冒泡排序
- C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序
- 基本排序(冒泡排序,选择排序,插入排序)
- C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序
- 内部排序冒泡排序、插入排序、选择排序、快速排序的算法和PHP实现
- C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序
- 基本算法简单实现-二分法查找、合并排序、冒泡排序、插入排序、选择排序、快速排序
- 简单的排序算法——插入排序,选择排序,交换排序(冒泡排序,快速排序)
- java实现冒泡排序,选择排序,插入排序,快速排序(简洁版)及性能测试
- 算法导论之插入排序,选择排序,归并排序,冒泡排序,希尔排序,堆排序,快速排序的c语言实现
- 排序的四种写法包括(冒泡排序,选择排序,插入排序,希尔排序)
- C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序
- 基本排序算法(冒泡排序,选择排序,插入排序)后续[时间测试]
- C#的四种排序算法:冒泡排序、选择排序、插入排序和希尔排序
- 面试最基本的三种排序算法 冒泡排序 插入排序 选择排序