排序算法之选择和插入排序!
发表于更新于
计算机基础算法排序算法之选择和插入排序!
月伴飞鱼选择排序
首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(大)元素。
然后放到已排序序列的末尾,以此类推,直到所有元素均排序完毕。
由于存在数据交换,选择排序不是稳定的排序算法。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| public class SelectionSort { public int[] selectionSort(int[] A, int n) { int min=0; for(int i=0; i<A.length-1;i++){ min = i; for(int j=i+1;j<A.length;j++){ if(A[min]>A[j]){ min = j; } } if(i!=min){ swap(A,i,min); } } return A; } private void swap(int[] A,int i,int j){ int temp = A[i]; A[i] = A[j]; A[j] = temp; } }
|
插入排序
通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public class InsertionSort { public int[] insertionSort(int[] A, int n) { int i,j,temp; for(i=1;i<n;i++){ temp = A[i]; for(j=i;j>0&&A[j-1]>temp;j--){ A[j] = A[j-1]; } A[j] = temp; } return A; } }
|