多语言展示
当前在线:2000今日阅读:82今日分享:48

浅谈排序算法

无论是考研还是应聘,计算机专业的学生都要熟练掌握基本的排序算法。本文对基本排序算法进行总结,希望给您一个清晰而深刻的认识和理解。排序算法可以根据数据的操作过程分为三大类:选择排序、插入排序和交换排序。其中交换排序包括著名的冒泡排序和快速排序。本文主要分析简单选择排序、冒泡排序和直接插入排序
方法/步骤
1

选择排序--简单选择排序简单选择排序指每一次从一组待排序的记录中选择出一个最小(最大)的记录存放在该组记录的初始位置,直至所有的待排序记录排完。该过程需经历n-1次遍历,第i次遍历要进行n-i-1次比较和1次交换操作。时间复杂度为O(n^2)。伪代码如下:public void selectSort(int[] array){int i;int j;int temp;int flag = 0;int n = array.length;for(i=0;i

2

交换排序--冒泡排序冒泡排序指:对于给定的一组待排序记录,通过对相邻两个记录进行比较,若顺序错误则交换,否则继续比较下一个相邻数据,该过程使得最后的记录是最大(最小)的记录。对于具有n个待排序的数据,首先需经历n-1次遍历,第i次遍历需要经历n-i-1次比较,至少有0次交换,至多有n-i-1次交换。因此。该方法的时间复杂度最好是O(n^2),最坏是O(n^2)。但是如果用一个交换次数的变量可以实现最好的复杂度为O(n)。即如果某一次遍历没有进行交换,则说明该记录已经有序,可以停止循环,否则交换。伪代码如下:public void bubbleSort(int[] array){int i;int j;int temp = 0;int count = 0;int n = array.length;for(i=0;iarray[j+1]){             temp = array[j];             array[j] = array[j+1];             array[j+1] = temp;             count++;          }          if(count == 0)             break;     }}}

3

插入排序--直接插入排序简单插入排序指每次将一个记录插入到一个已经排好序的有序数据中,并保持插入后的数据仍有序,直至所有的数据插入完毕。该过程可以从后往前插入数据也可以从前往后插入数据。其中前者具有利用游标是否到达0,无需另设标记的优势。对于具有n个待排序数据,首先需经历n-1次遍历,第i次遍历需要经历至少1次,至多i-1次比较和i-1次移动操作。所以该方法的时间复杂度最好为O(n),最差为O(n^2).伪代码如下:public void insertSort(int[] array){int i;int j;int temp;int flag = 0;int n = array.length;for(i=1;i=0;j--){          if(array[i]

推荐信息