《算法》选择排序、插入排序、冒泡排序
2017-04-01 21:54
197 查看
1.选择排序
//选择排序,《算法》p156 package algorithm; public class Selection_p156{ public void sort(int[] a){ int N = a.length;//数组长度 for(int i = 0; i < N-1; i++){ for(int j = i+1; j < N; j++){ if(a[j] < a[i]){ int temp = a[j]; a[j] = a[i]; a[i] = temp; } } } for(int i = 0; i < N; i++){ System.out.println(a[i]); } } public static void main(String[] args) { // TODO Auto-generated method stub Selection_p156 test = new Selection_p156 (); int[] a = {5,4,3,2,1}; test.sort(a); } }
思路
将第一个元素与剩余所有元素相比,如果有比第一个元素小的,则互换
再将第二个元素与剩余所有元素相比,如果有比第二个元素小的,则互换
……
2.插入排序
//插入排序,《算法》p1 package algorithm; public class Insertion_p157 { public void sort(int[] a){ int N = a.length; for(int i = 1; i < N; i++){ for(int j = i; j > 0; j--){ if (a[j] < a[j-1]) { int temp = a[j]; a[j] = a[j-1]; a[j-1] = temp; } } } for(int i = 0; i < N; i++){ System.out.println(a[i]); } } public static void main(String[] args) { // TODO Auto-generated method stub Insertion_p157 test = new Insertion_p157(); int[] a = {5,4,3,2,1}; test.sort(a); } }
思路
将第i个元素插入到前i-1个元素的适当位置中,插入过程为
当前元素小于上一个元素时,则互换位置,不小于时就开始将第i+1个元素插入到前i个元素的适当位置中。
3.冒泡排序
//冒泡排序 package algorithm; public class Bubble { public void sort(int[] a){ int N = a.length; for(int i = 0; i < a.length-1; i++){ for(int j = 0; j < a.length-1-i; j++){ if (a[j] > a[j+1]){ int temp = a[j]; a[j] = a[j+1]; a[j+1] = temp; } } } for(int i = 0; i < N; i++){ System.out.println(a[i]); } } public static void main(String[] args) { // TODO Auto-generated method stub Bubble test = new Bubble(); int[] a = {5,4,3,2,1}; test.sort(a); } }
思路
第一次循环将最大的数排到最后一个,第二次循环将第二大的数排到倒数第二个……
每次循环都从第一个元素开始相邻元素进行比较,如果当前元素比下一个元素更大,则互换,如不大于,则比较下一个和下下个元素……
相关文章推荐
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
- 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。
- 选择排序、插入排序、冒泡排序python实现
- 算法分析中最常用的几种排序算法(插入排序、希尔排序、冒泡排序、选择排序、快速排序,归并排序)C 语言版
- 算法之插入排序与选择排序
- 算法系列(三)排序算法上篇--冒泡排序插入排序和选择排序
- 排序(快排,冒泡,堆排序,插入排序,归并排序,选择排序)算法Java实现
- c语言中冒泡排序、插入排序、选择排序算法比较
- python开发之路Day17-算法设计(冒泡排序、选择排序、插入排序、二叉树)
- Python算法 冒泡排序和选择排序
- 【从头开始学算法】选择排序 插入排序 冒泡排序
- java 算法基础之六插入排序与冒泡排序
- 算法——初级排序——冒泡排序、选择排序和插入排序
- PHP四种基础算法详解(冒泡排序、选择排序、插入排序、快速排序)
- 选择排序,插入排序,冒泡排序,希尔排序,归并排序,快速排序
- 冒泡排序、选择排序、插入排序 算法实现
- 算法研究之插入排序、冒泡排序
- java基本算法总结(冒泡排序、选择排序、插入排序)
- c语言中冒泡排序、插入排序、选择排序算法比较
- 从排序开始(一)冒泡排序、插入排序与选择排序