冒泡、插入、选择、快速排序算法
来源:互联网 发布:杭州行知中学 编辑:程序博客网 时间:2024/05/20 04:27
冒泡排序:原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束。
插入排序:它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入;假设第一个元素排好,之后的元素对排好的部分从后向前比较并逐一移动。
选择排序:从未排好的部分的第一个作为最小(最大)的,然后依次和剩余的比较,如果有更小(更大)的,记下下标,以此作为新的最小(最大)值,继续比较,一趟结束后,然后和第一个进行交换。
快速排序:快速排序采用了分而治之的思想,利用递归方法把大量数据划分成多分小量数据进行排序;而涉及到的基准关键字是关键。
基准关键字的选取,基准关键字的选取是决定快速排序算法的关键,常用的基准关键字的选取方式如下:
第一种:三者取中。将序列首、尾和中间位置上的记录进行比较,选择三者中值作为基准关键字。
第二种:取left和right之间的一个随机数,用n[m]作为基准关键字。采用这种方法得到的快速排序一般称为随机的快速排序。
package com.kingcom.test;/*** @author CQling* @version 2017年10月17日**/public class MianSort {public static int[] bubbleSort(int[] sort) {int len=sort.length;int[] temp=sort;for (int i = 0; i < len; i++) {for (int j = i+1; j < len; j++) {if (temp[i]<temp[j]) {int t = sort[i];temp[i] = temp[j];temp[j] = t;}}}return temp;}public static int[] insertSort(int[] sort) {int len=sort.length;int i,j,t;for (i = 1; i < len; i++) {t = sort[i];for (j = i-1; j >=0&&t > sort[j]; j--) {sort[j+1] = sort[j];}sort[j+1] = t;}return sort;}public static int[] selectSort(int[] sort) {int i,j,k,t;for (i = 0; i < sort.length; i++) {k=i;for (j = i+1; j < sort.length; j++) {if (sort[k]<sort[j]) {k=j;}}if (k!=i) {t=sort[i];sort[i]=sort[k];sort[k]=t;}}return sort;}public static int[] quickSort(int[] sort) {int low=0;int hight=sort.length-1;quickSort(low, hight, sort);return sort;}private static void quickSort(int low,int hight,int[] sort) {if (low>hight) {return;}int i=low,j=hight;int index = sort[i];while (i<j) {while (i<j&&index>=sort[j]) {j--;}if (i<j) {sort[i++]=sort[j];}while (i<j&&index<=sort[i]) {i++;}if (i<j) {sort[j--]=sort[i];}}sort[i]=index;quickSort(low, i-1, sort);quickSort(i+1, hight, sort);}public static void main(String[] args) {int[] s = {2,1,4,5,3};System.out.print("Sort Before:");for (int i = 0; i < s.length; i++) {System.out.print(s[i]+" ");}System.out.println("");System.out.print("InsertSort:");int[] t = insertSort(s);for (int i = 0; i < t.length; i++) {System.out.print(t[i]+" ");}System.out.println("");System.out.print("BubbleSort:");int[] t1 = bubbleSort(s);for (int i = 0; i < t1.length; i++) {System.out.print(t1[i]+" ");}System.out.println("");System.out.print("SelectSort:");int[] t2 = selectSort(s);for (int i = 0; i < t2.length; i++) {System.out.print(t2[i]+" ");}System.out.println("");System.out.print("QuickSort :");int[] t3 = quickSort(s);for (int i = 0; i < t3.length; i++) {System.out.print(t3[i]+" ");}}}
阅读全文
0 0
- 算法--排序(冒泡,选择,插入,快速)
- 算法--排序(冒泡,选择,插入,快速)
- 排序算法(冒泡、选择、插入、快速)
- C 排序算法 (冒泡)(选择)|(插入)|(快速)
- 算法排序(冒泡、选择、插入、快速)
- php 冒泡、选择、插入、快速排序算法
- 排序算法(冒泡、快速、选择、插入)
- 冒泡、插入、选择、快速排序算法
- 排序算法(冒泡、快速、选择、插入)
- 选择排序&插入排序&冒泡排序&快速排序算法实现
- Java数组排序算法,冒泡,选择,插入,快速排序
- Java数组排序算法,冒泡,选择,插入,快速排序
- 插入排序,选择,冒泡,快速排序算法及优化
- java排序之冒泡、插入、选择、快速等排序算法
- c排序算法:选择、冒泡、插入、快速、归并、堆排序
- 各种排序算法-Java-冒泡、选择、插入、快速、归并排序
- 冒泡、插入、选择、快速排序
- 冒泡,快速,选择,插入排序
- sizeof()与size()和length()的区别
- 指针类型:指向3行4列的整形二维数组
- 五大常用算法——分治法,动态规划,回溯法,分支界限法,贪心算法
- 队列操作
- Dos批处理编程常用命令
- 冒泡、插入、选择、快速排序算法
- 阻塞、非阻塞、同步、异步浅析
- jquery实现高度的获取-位置函数
- 最长公共子序列LCS
- license server response has passed dat
- vue2组件实现懒加载浅析
- python控制树莓派摄像头
- linux修改时间
- 动画插件wow.js的使用方法