Java 简单算法--排序】的更多相关文章

1. 冒泡排序 package cn.magicdu.algorithm; public class BubbleSort { public static void main(String[] args) { int[] arr = { 5, 7, 8, 4, 3, 9, 7, 6 }; bubbleSort(arr); } /** * 冒泡排序 * @param arr */ private static void bubbleSort(int[] arr) { int temp=0; for…
简单选择排序:(选出最小值,放在第一位,然后第一位向后推移,如此循环)第一位与后面每一个逐个比较,每次都使最小的置顶,第一位向后推进(即刚选定的第一位是最小值,不再参与比较,比较次数减1) 复杂度: 所需进行记录移动的操作次数较少 0--3(n-1) ,无论记录的初始排列如何,所需的关键字间的比较次数相同,均为n(n-1)/2,总的时间复杂度为O(n2):空间复杂度 O(1) 算法改进:每次对比,都是为了将最小的值放到第一位,所以可以一比到底,找出最小值,直接放到第一位,省去无意义的调换移动操作…
package cn.magicdu.algorithm; import java.util.LinkedList; import java.util.List; /** * 出圈问题,数到某个数字的倍数就出圈,打印最后剩下的元素的原来位置 * * @author xiaoduc * */ public class Circle { public static void main(String[] args) { System.out.println("剩下元素原来的位置"+cycle…
package cn.magicdu.algorithm; public class CircleNumber { public static void main(String[] args) { for(int i=10;i<10000;i++){ if(isCircleNumber(i)){ System.out.println(i); } } } /** * 判断是否是回文数字 * @param num * @return */ private static boolean isCircl…
package cn.magicdu.algorithm; /** * 九九乘法口诀表 * * @author xiaoduc * */ public class NineNineMulitTable { public static void main(String[] args) { print99(); } /** * 打印九九乘法口诀,只用一次循环,两个循环变量 */ public static void print99(){ for(int i=1,j=1;j<=9;i++){ Syst…
package cn.magicdu.algorithm; /** * 打印素数 * * @author xiaoduc * */ public class Prim { public static void main(String[] args) { for(int i=1;i<=100;i++){ if(isPrime(i)){ System.out.println(i); } } } /** * 判断是否是素数 * @param num * @return */ private stati…
简单选择排序算法: 基本思想: 在待排序数据中,选出最小的一个数与第一个位置的数交换:然后在剩下的数中选出最小的数与第二个数交换:依次类推,直至循环到只剩下两个数进行比较为止. 实例: 0.初始状态 3,1,5,7,2,4,9,6(共8个数) 1.n=8 个数中,最小数值为1,与第一个数交换:1,3,5,7,2,4,9,6 2.剩下 n-1=7 个数中,最小数值为2,与第二个数交换:1,2,5,7,3,4,9,6 3.剩下 n-2=6 个数中,最小数值为3,与第三个数交换:1,2,3,7,5,4…
[基本思想] 在要排序的一组数中.选出最小的一个数与第一个位置的数交换:然后在剩下的数中再找出最小的与第二个位置的数交换,如此循环至倒数第二个数和最后一个数比較为止. 算法关键:找到最小的那个数.并用变量记住它的下标. [java实现] public class SimpleSelectionSort { public static void main(String[] args) { int[] arr = { 9, 1, 5, 8, 3, 7, 4, 6, 2 }; System.out.p…
今天来总结一下常用的内部排序算法.内部排序算法们需要掌握的知识点大概有:算法的原理,算法的编码实现,算法的时空复杂度的计算和记忆,何时出现最差时间复杂度,以及是否稳定,何时不稳定. 首先来总结下常用内部排序算法: 类别 名称 时间复杂度(默认最坏情况) 空间复杂度 稳定性 备注 插入排序 直接插入排序  O(n^2)  O(1) 稳定   插入排序 希尔排序  最坏O(n^2),平均O(n^1.3)  O(1) 不稳定    交换排序 冒泡排序  O(n^2)  O(1) 稳定    交换排序…
public class SimpleAri { public static void main(String[] args) { int[] t = {11, 21, 22, 1, 6, 10, 3, 2, 12, 9, 0, 15, 6, 19, 9, 32, 11, 8, 4, 7, 5, 3, 2}; // int[] a = test1(); System.out.println("排序前:" + Arrays.toString(t)); System.out.println…