Java数据结构与算法-读后感01(简单排序:冒泡,选择,插入)
2012-05-24 15:14
459 查看
第三章:关于一些简单排序的比较和代码
简单排序中分为4种类型:
1.冒泡排序(这个想必是各位非常熟悉,平时也接触得比较多的)
2.选择排序
3.插入排序
1.冒泡排序
一般来说,数组中如果有N个数据项,则第一趟排序中有N-1次比较,第二趟有N-2次,依次类推后其序列的求和公式为:
(N-1)+(N-2)+(N-3)+...+1 = N*(N-1)/2
这样来看,算法作了约N²/2次比较(忽略减1),交换和比较操作次数都与N²成正比,所以这种排序算法的速度是很慢的。
2.选择排序
选择排序与冒泡排序执行了相同次数的比较:N*(N-1)/2。但是交互的次数只有N次。
3.插入排序
在绝大部分情况下,插入排序算法是简单算法中最好的一种,虽然插入排序仍然需要O(N²)的时间,但是在一般情况下,它要比冒泡排序快一倍,比选择排序还要快一点。
代码如下:
简单排序中分为4种类型:
1.冒泡排序(这个想必是各位非常熟悉,平时也接触得比较多的)
2.选择排序
3.插入排序
1.冒泡排序
一般来说,数组中如果有N个数据项,则第一趟排序中有N-1次比较,第二趟有N-2次,依次类推后其序列的求和公式为:
(N-1)+(N-2)+(N-3)+...+1 = N*(N-1)/2
这样来看,算法作了约N²/2次比较(忽略减1),交换和比较操作次数都与N²成正比,所以这种排序算法的速度是很慢的。
2.选择排序
选择排序与冒泡排序执行了相同次数的比较:N*(N-1)/2。但是交互的次数只有N次。
3.插入排序
在绝大部分情况下,插入排序算法是简单算法中最好的一种,虽然插入排序仍然需要O(N²)的时间,但是在一般情况下,它要比冒泡排序快一倍,比选择排序还要快一点。
代码如下:
public class BubbleSortTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int max = 10; BubbleArray bArray = new BubbleArray(max); bArray.insert(12); bArray.insert(23); bArray.insert(232); bArray.insert(1); bArray.insert(5); bArray.insert(33); bArray.insert(51); bArray.insert(41); bArray.insert(22); bArray.insert(98); bArray.display(); // bArray.bubbleSort(); // bArray.selectSort(); bArray.insertSort(); bArray.display(); } } class BubbleArray { private int[] array; private int nElems; public BubbleArray(int max) { array = new int[max]; nElems = 0; } public void insert(int value) { array[nElems] = value; nElems++; } public void display() { for (int i = 0; i < array.length; i++) { System.out.print(array[i] + " "); } System.out.println(""); } public void bubbleSort() { int first; int last; for (last = array.length - 1; last > 1; last--) { for (first = 0; first < last; first++) { if(array[first]>array[first + 1]) { swap(first, first + 1); } } } } public void selectSort() { int in,out,min; for (out = 0; out < array.length - 1; out++) { min = out; System.out.println(min); for (in = out + 1; in < array.length; in++) { if (array[in] < array[min]) { min = in; } } swap(out, min); } } public void insertSort() { int in,out; for (out = 1; out < array.length; out++) { int temp = array[out]; in = out; while(in > 0 && array[in - 1] >= temp) { array[in] = array[in - 1]; --in; } array[in] = temp; } } private void swap(int one, int two) { // TODO Auto-generated method stub int temp = array[one]; array[one] = array[two]; array[two] = temp; } }
相关文章推荐
- php四种基础算法:冒泡,选择,插入和快速排序法
- Java数据结构和算法(三)——冒泡、选择、插入排序算法
- Java实现的排序算法及比较 [冒泡,选择,插入,归并,希尔,快排]
- php四种基础算法:冒泡,选择,插入和快速排序法
- 算法-链表排序(冒泡、选择、插入)
- php四种基础算法:冒泡,选择,插入和快速排序法
- Java基础算法(插入、选择、冒泡、快排)201612
- 三种简单排序(冒泡、插入、选择)的比较和图解
- 算法--排序(冒泡,选择,插入,快速)
- 数据结构之二分查找、简单排序(冒泡、插入、选择)、归并排序
- 算法-基本排序:冒泡、选择、插入
- 3种简单排序(选择,冒泡,直接插入)
- php四种基础算法:冒泡,选择,插入和快速排序法
- 数据结构与算法之基础排序(冒泡/插入/选择)<十>
- 三种基本的排序算法:选择,插入,冒泡
- (三)Java数据结构和算法——冒泡、选择、插入排序算法
- c# 排序 算法 函数 冒泡 选择 插入 希尔
- 图解排序算法(一)之3种简单排序(选择,冒泡,直接插入)
- 简单排序:插入,选择和冒泡
- Java -- 简单排序(冒泡、选择、插入)