数组排序的常见方法
2017-04-23 18:20
225 查看
一个数组有N个数字,由小到大排序;
1.冒泡排序
主要思想:从前到后一次比较相邻两个数的大小,顺序不满足大小要求就交换两者之间的位置;
然后循环数组长度-1,实现排序
比较次数 (N-1) + (N-2)+·······+1= N*(N-1)/2
2.选择排序
主要思想:首先选择数组第一个数,与第二个数做比较,对大的数进行标记,并与第三个数进行比较,······依次比较到最后一个数,最后得出的是数组中最大的数,然后将这个数与最后一个数交换位置;这样就将最大的数放到了最后;
循环上述操作,注意每一轮比较,的最后一个数是上一轮最大数前面的那个数字;
比较次数:(N-1)+(N-2)+······+1=N*(N-1)/2
以上两种的时间复杂度都是O(N^2),但是选择排序对数组中元素的交换要少于冒泡排序;
以下是样本代码:
1.冒泡排序
主要思想:从前到后一次比较相邻两个数的大小,顺序不满足大小要求就交换两者之间的位置;
然后循环数组长度-1,实现排序
比较次数 (N-1) + (N-2)+·······+1= N*(N-1)/2
2.选择排序
主要思想:首先选择数组第一个数,与第二个数做比较,对大的数进行标记,并与第三个数进行比较,······依次比较到最后一个数,最后得出的是数组中最大的数,然后将这个数与最后一个数交换位置;这样就将最大的数放到了最后;
循环上述操作,注意每一轮比较,的最后一个数是上一轮最大数前面的那个数字;
比较次数:(N-1)+(N-2)+······+1=N*(N-1)/2
以上两种的时间复杂度都是O(N^2),但是选择排序对数组中元素的交换要少于冒泡排序;
以下是样本代码:
public class BubbleSort { public void sort(int array[]){ for(int i=1;i<array.length;i++){ for(int j=0;j<array.length-i;j++){ if(array[j]>array[j+1]){ int temp = array[j+1]; array[j+1] = array[j]; array[j] = temp; } } } show(array); } public void selectSort(int array[]){ for(int i=1;i<array.length;i++){ int index=0; for(int j=0;j<array.length-i;j++){ if(array[j+1]>array[index]){ index = j+1; } } int temp = array[array.length-i]; array[array.length-i] = array[index]; array[index]= temp; } show(array); } public void reserveSort(int array[]){ for(int i=0;i<array.length/2;i++){ int temp = array[i]; array[i] = array[array.length-i-1]; array[array.length-i-1] = temp; } show(array); } public void show(int array[]){ for(int i:array){ System.out.print(i+"<"); } } public static void main(String args[]){ int array[]={12,34,45,54,23,12,22,33,45}; BubbleSort bubbleSort = new BubbleSort(); bubbleSort.show(array); System.out.print("\n"); bubbleSort.reserveSort(array); //bubbleSort.selectSort(array); //bubbleSort.sort(array); } }
相关文章推荐
- 几种常见的数组排序方法
- PHP常见数组排序方法小结
- 四种常见的数组排序方法(php实现)
- java学习之路 之 面向对象编程-main方法的语法、数组排序、操作数组的工具类、数组操作常见问题
- Lesson_for_java_day07--java中数组的定义及常见排序方法--冒泡法、简单选择法、直接插入法和调用方法排序
- 数组的反转和常见排序方法(快排、冒泡、选择)
- 【整理】常见的数组排序方法以及代码实现
- 关于常见PHP数组排序方法总结
- Java--对数组排序的常见方法总结
- JAVA 中数组的几种排序方法 标准的!
- 数组排序方法的性能比较(3):LINQ排序实现分析
- PHP数组的初始化 访问数组 数组操作符 多维数组的排序 对数组重新排序 从文件载入数组的方法 数组其他有用的操作 统计数组个数 将数组转换称标量变量 extract()
- 数组排序方法的性能比较(5):对象大小与排序性能
- 数组排序方法的性能比较(4):LINQ方式的Array排序
- Java实现几种常见排序方法(下)
- 各种数组排序方法总结(Java)
- Java实现几种常见排序方法(下)
- Java实现几种常见排序方法(上)
- PHP 数组排序方法总结 推荐收藏
- JAVA 中数组的几种排序方法