java排序算法 - 大海的专栏 - CSDNBlog

来源:百度文库 编辑:神马文学网 时间:2024/04/20 16:55:30
 java排序算法
排序是CODE经常会用到的,在此做一个用JAVA实现的排序算法以供以后忘了的时候有备参考!
首先,在排序过程中,经常会对数组中两个元素进行交换,以下是交换算法:
public static void swap(int[] array, int i, int j) ...{
        int temp = array[i];
        array[i] = array[j];
        array[j] = temp;
    }
1 选择排序
选择排序其实在前面已经有一篇文章说明了,不过为了此处能讲全排序算法,再次提及.
选择排序在任何情况下都是O(n2)
public String[] selectionSort(int[] arrayA)...{
                for (int i = 0; i < arrayA.length - 1; i++) ...{
            int minIndex = i;
            // Find smallest value
            for (int j = i + 1; j < arrayA.length; j++) ...{
                int e1 = arrayA[j];
                int e2 = arrayA[minIndex];
                // Compare two value
                if (e1                    minIndex = j;
                }
            }
            // Swap value if necessary
            if (minIndex != i)...{
                swap(arrayA,minIndex,j);
            }
        }
        return arrayA;
    }
2 冒泡排序
对于平均情况,冒泡排序的性能是O(n2)
public static void bubbleSort(int[] array...{
     for(int i=0;i         boolean swapped=false;
         for(int j=0;j             if(array[j]>array[j+1])...{
               swap(array,i,j+1);
               swapped=tree;
}
}
        if(!swapped)...{
           return;
}
}
}
3 插入排序
插入排序的最差情况性能是O(n2)
public static void insertionSort(int[] array)...{
    for(int i=1;i        int itemToInsert=array[i];
        int j=i-1;
        while(j>=0)...{
            if(itemToInsert              array[j+1]=array[j];
              j--;
}
            else...{
               break;
}
}
         array[j+1]=itemToInsert;
}
}
OK,就到这里了,这是常用的也是数据结构上的三种排序算法,喝杯咖啡去
java排序算法 - 大海的专栏 - CSDNBlog 排序算法小结 - ilibaba的专栏 - CSDNBlog 一个Dijkstra算法的完整Java程序实现,算法初学者必看! - brokencar的专栏 - CSDNBlog 各种排序算法java实现 用Java实现几种常见的排序算法 采用部分快速排序算法实现数组的部分排序 - eaglet的专栏 - CSDN博客 学习Java的30个基本概念 - 刀目村的专栏 - CSDNBlog 常见的排序算法 常用的排序算法 java正则表达式入门文档 - lenhan12345的专栏 - CSDNBlog 如何迅速成为Java高手 - paulfong的专栏 - CSDNBlog Java学习总论(转) - popkiler的专栏 - CSDNBlog Java 设计模式:代理模式Proxy - hsyj_0001的专栏 - CSDNBlog Java程序员面试宝典 - 飞鸟的专栏 - CSDNBlog java clone方法使用详解 - ilibaba的专栏 - CSDNBlog Effective Java 笔记(二) - ilibaba的专栏 - CSDNBlog Effective Java 笔记(五) - ilibaba的专栏 - CSDNBlog Effective Java 笔记(六) - ilibaba的专栏 - CSDNBlog Effective Java 笔记(七) - ilibaba的专栏 - CSDNBlog Java 设计模式:代理模式Proxy - hsyj_0001的专栏 - CSDNBlog 解决Java Applet和Java Script通信问题 - complayer的专栏 - CSDNBlog 贪心算法在背包背包问题中应用的探讨1 - shaopengfei的专栏 - CSDNBlog 各种排序算法的比较 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法,而冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。