千家信息网

各种排序算法的编写教程

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"各种排序算法的编写教程",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"各种排序算法的编写教程"吧!冒泡排序:public class So
千家信息网最后更新 2026年10月31日各种排序算法的编写教程

本篇内容主要讲解"各种排序算法的编写教程",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"各种排序算法的编写教程"吧!

冒泡排序:

public class SortTest {        public static void main(String[] args) {                int[] a = {345,7,32,5,4,-1,3,12,23,110,45645,321,456,78,-1,78,78,32,444,345};                show(a);                bubbleSort(a);                show(a);        }        private static void bubbleSort(int[] a) {                for(int i=0;ia[j+1]){                                        int tmp = a[j];                                        a[j] = a[j+1];                                        a[j+1] = tmp;                                }                        }                }        }        private static void show(int[] a) {                System.out.println(Arrays.toString(a));        }}

快速排序(无重复值):

public class SortTest {        public static void main(String[] args) {                int[] a = {345,7,32,5,4,3,12,23,110};                show(a);                quickSort(a,0,a.length-1);                show(a);        }        private static void quickSort(int[] a, int start, int end) {                if (start>=end)                        return;                int i=start;                int j=end;                int index = start;                while(ia[index]){                                j--;                        }                        index = swap(a,j,index);                        while(a[index]>a[i]){                                i++;                        }                        index = swap(a,i,index);                }                quickSort(a, start, index-1);                quickSort(a, index+1, end);        }        private static int swap(int[] a, int n, int index) {                int tmp = a[n];                a[n] = a[index];                a[index] = tmp;                return n;        }        private static void show(int[] a) {                System.out.println(Arrays.toString(a));        }}

快速排序(可含重复值)

public class SortTest {        public static void main(String[] args) {                int[] a = {345,7,32,5,4,-1,3,12,23,110,45645,321,456,78,-1,78,78,32,345};                show(a);                quickSort2(a,0,a.length-1);                show(a);        }        private static void quickSort2(int[] a, int start, int end) {                if (start>=end)                        return;                int i=start;                int j=end;                int index = end;                while(ia[index]){                                j--;                        }                        if (j!=index && a[j]==a[index]){                                index = swap(a,--j,index);                        }else{                                index = swap(a,j,index);                        }                        while(a[index]>a[i]){                                i++;                        }                        if (i!=index && a[i]==a[index]){                                index = swap(a,++i,index);                        }else{                                index = swap(a,i,index);                        }                }                quickSort2(a, start, index-1);                quickSort2(a, index+1, end);        }        private static int swap(int[] a, int n, int index) {                int tmp = a[n];                a[n] = a[index];                a[index] = tmp;                return n;        }        private static void show(int[] a) {                System.out.println(Arrays.toString(a));        }}

堆排序

public class SortTest {        public static void main(String[] args) {                int[] a = {345,7,32,5,4,-1,3,12,23,110,45645,321,456,78,-1,78,78,32,444,345};                show(a);                heapSort(a);                show(a);        }        private static void heapSort(int[] a) {                //建立最大堆                int size = a.length;                for(int i=size/2-1;i>=0;i--){                        createBigHeap(a,i,size-1);                }                //排序                for(int j=0;jtmp){                                a[start] = a[j];                                start = j;                                j = 2*j+1;                        }else{                                break;                        }                }                a[start] = tmp;        }        private static void show(int[] a) {                System.out.println(Arrays.toString(a));        }}

插入排序

public class SortTest {        public static void main(String[] args) {                int[] a = {345,7,32,5,4,-1,3};                show(a);                insertSort(a);                show(a);        }        private static void insertSort(int[] a) {          for(int i=0;i=0;j--){                  if(tmp

折半插入排序

public class SortTest {        public static void main(String[] args) {                int[] a = {345,7,7,345,2,2,7,2,7,23,2,345,7,32,5,4,-1,3,7,2,3,2,3,4,2,1,2,4,5,3,345,3,2};                show(a);                insertSort2(a);                show(a);        }        private static void insertSort2(int[] a) {                   for(int i=0;ia[i])                            continue;                    int low = 0;                    int high = i;                    int mid = (high+low)/2;                    while(high>=low){                            mid = (high+low)/2;                        if(tmpa[mid]){                                low = mid + 1;                        } else{                                low=mid;                                break;                        }                     }                     for(int j=n;j>mid;j--){                           a[j] = a[j-1];                   }                   a[low] = tmp;                }        }        private static void show(int[] a) {                System.out.println(Arrays.toString(a));        }}

希尔排序

public class SortTest {        public static void main(String[] args) {                int[] a = {345,7,32,5,4,-1,3,2,3,5,7,8,90,1};                show(a);                shellSort(a);                show(a);        }        private static void shellSort(int[] a) {                shellSort(a,a.length);        }        private static void shellSort (int[] a, int n){             int i, j, k, temp, gap;             int[] gaps = { 1,5,13,43,113,297,815,1989,4711,11969,27901,84801,                            213331,543749,1355339,3501671,8810089,21521774,                            58548857,157840433,410151271,1131376761,2147483647 };             for (k=0; gaps[k]= 0){                 gap = gaps[k];                 for (i=gap; i=gap && a[j-gap]>temp){                         a[j] = a[j-gap];                         j = j-gap;                     }                     a[j] = temp;                 }             }         }        private static void show(int[] a) {                System.out.println(Arrays.toString(a));        }}

选择排序

public class SortTest {        public static void main(String[] args) {                int[] a = {345,7,32,5,4,-1};                show(a);                selectSort(a);                show(a);        }        private static void selectSort(int[] a) {                for (int i = 0; i < a.length-1; i++) {                        int min = i;                        for (int j = i+1; j < a.length; j++) {                                if (a[j]

归并排序

public class SortTest {        public static void main(String[] args) {                int[] a = {345,7,32,5,4,-1,3,2,3,5,7,8,90,1,432,1};                show(a);                mergeSort(a);                show(a);        }        private static void mergeSort(int[] a) {                //找出中间值                int mid = a.length/2;                //申请空间存储中间索引以左的值                int[] left = setValue(a,0,mid);                if (left.length>1){//继续拆分左边,直到元素值为1个                        mergeSort(left);                }                //申请空间存储中间索引以右的值                int[] right = setValue(a,mid,a.length);                if (right.length>1){//继续拆分右边,直到元素值为1个                        mergeSort(right);                }                //将左右值合并                merge(a,left,right);        }        private static void merge(int[] a , int[] left, int[] right) {                int i=0,j=0,k=0;                for(;i

到此,相信大家对"各种排序算法的编写教程"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

排序 教程 算法 元素 内容 空间 索引 j++ 存储 学习 实用 更深 兴趣 右边 大堆 实用性 实际 操作简单 方法 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 保险科技 互联网保险 广州万易互联网科技有限公司 河南云网互联网络科技有限公司 互联网科技公司的优势 易互联网科技有限公司 艾特科技互联网 苏州互联网科技贷款公司 上海卓越科技 互联网 宁夏众和广鑫互联网科技有限公司 重庆互联网医院沙龙医盟信息科技 燊美集互联网科技有限公司 华夏恒生互联网科技013171 雨阳互联网卡科技有限公司 江苏互联网科技小贷 互联网硬科技公司 互联网公司属于科技吗 互联网科技博主张洲 杭州融税互联网科技有限公司 互联网领先科技成果宣传视频 互联网大会出现的黑科技 咖啡 百单网互联网科技有限公司 互联网科技工作委员会 济南和联互联网科技有限公司 天速互联网络科技有限公司 天津腾达互联网科技有限公司 广州百诚互联网科技有限公司官网 互联网科技资金流入 互联网领先科技宣传片 昆明中奇联合互联网科技
0