---------------------- android培训、java培训、期待与您交流! ----------------------
冒泡排序:
冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行 直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
冒泡排序是稳定的排序。
算法:
- 比较相邻的元素。如果第一个比第二个大,就交换它们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
1 public int[] bubbleSort(int[] arr) { 2 if(arr!=null) { 3 int len = arr.length; 4 for(int i=len-1; i>0; --i) { 5 for(int j=0; j<i; ++j) { 6 if(arr[j]>arr[j+1]) { 7 int temp = arr[j]; 8 arr[j] = arr[j+1]; 9 arr[j+1] = temp; 10 } 11 } 12 } 13 } 14 return arr; 15 }
冒泡排序的核心就在两个for循环的处理上。
插入排序:
插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位 置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最 新元素提供插入空间。
插入排序是稳定的排序。
算法:
一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:
- 从第一个元素开始,该元素可以认为已经被排序
- 取出下一个元素,在已经排序的元素序列中从后向前扫描
- 如果该元素(已排序)大于新元素,将该元素移到下一位置
- 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
- 将新元素插入到该位置后
- 重复步骤2~5
1 public static void insertionSort(Comparable []data){ 2 for(int index=1;index<data.length;index++){ 3 Comparable key = data[index]; 4 int position = index; 5 //shift larger values to the right 6 while(position>0&&data[position-1].compareTo(key)>0){ 7 data[position] = data[position-1]; 8 position--; 9 } 10 data[position]=key; 11 } 12 }
直接选择排序:
选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下:首先在未排序序列中找到最小(大)元素,存放到该待排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
选择排序是不稳定的排序。
算法:
- 在未排序序列中找到最小(大)元素,存放到排序序列的起始位置
- 从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾
- 重复1~2步的操作,直到所有元素均排序完毕
1 public int[] selectSort(int[] arr) { 2 if(arr!=null) { 3 int len = arr.length; 4 int index = 0; 5 while(index < len-1) { 6 int min = arr[index], minIndex = index; 7 for(int i=index+1; i<len; i++) { 8 if(min > arr[i]) { 9 min = arr[i]; 10 minIndex = i; 11 } 12 } 13 if(minIndex != index) { 14 arr[minIndex] = arr[index]; 15 arr[index] = min; 16 } 17 ++index; 18 } 19 } 20 return arr; 21 }
---------------------- android培训、java培训、期待与您交流! ----------------------