工作闲下来了,偶来学习下排序算法的思想,适当的缓解下压力,换个思考方式也很不错的。
冒泡排序:是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
实现:
public class ubbleSort {
public static void main(String[] args){
int[] b={2,1,56,8,9,0};
for(int i=0;i<=b.length-1;i++){ //最多做n-1趟排序
int temp=0;
//方法一:大数下沉
for(int j = b.length - 1; j > i; j--) {
if (b[j] < b[j - 1])
{
temp = b[j];
b[j] = b[j - 1];
b[j - 1] = temp;
}
}
//方法二:小数上浮
for(int j=1;j<(b.length-i);j++){
if(b[j-1]>b[j]){
temp=b[j-1];
b[j-1]=b[j];
b[j]=temp;
}
}
}
for(int i=0;i<b.length;i++)
System.out.println(b[i]);
}
}
选择排序:是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小元素,然后放到排序序列末尾。以此类推,直到所有元素均排序完毕
实现:
public class electSort {
public static void main(String[] args) {
int[] b={2,1,56,8,9,0};
for(int i=0;i<b.length;i++){
for(int j=i;j<b.length;j++){
if(b[i]<b[j]){
int temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
}
for(int i=0;i<b.length;i++)
System.out.println(b[i]);
}
}
插入排序 :是一种简单直观的排序算法。 它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。
实现 :
/***
* @date 2013-12-31 上午10:58:46
* 工作原理:在已排序好的数组中b,对于待定排序的元素a,将有序数组b从后向前扫描,找到a元素即将插入的位置
* 1.第一个元素是已经拍好的元素数组
* 2.找到下一个新的待定元素,将已排序好的元素从后向前扫描,将待定元素插入已排序的元素中
* 3.重复遇以上的步骤
*/
public class nsertSort {
public static void main(String[] args){
int[] b={2,1,56,8,9,0,3};
for(int i=1;i<b.length;i++){
int temp=b[i];
for(int j=i;j>0;j-- ){
if(temp<b[j-1]){
b[j]=b[j-1];
b[j-1]=temp;
}
}
}
for(int i=0;i<b.length;i++){
System.out.println(b[i]);
}
}
}
大家 互相交流。。。。。。