即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

精选推荐 用Java语言实现经常使用算法

编程语言 qq_33499573 15℃ 0评论

创建一个普通的Java类就可以去验证算法是否有效了,数组如果你看着不是很明显的话,你可以换一下里面的元素。

关于排序算法的稳定性,可以参考:http://blog.csdn.net/qq_33499573/article/details/72772307 下的文档。

冒泡排序:
      依次比较相邻的两个数,将小数放在前面,大数放在后面。即首先比较第1个和第2个数,将小数放前,大数放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。重复以上过程,仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到最大数前的一对相邻数,将小数放前,大数放后,第二趟结束,在倒数第二个数中得到一个新的最大数。如此下去,直至最终完成排序。
 //冒泡排序
 @Test
 public void bubbleSort() {
  int numbers[] = {78,5,98,45,36,15,24,2,3,21,11};
     int temp; // 记录临时中间值   
     int size = numbers.length; // 数组大小   
     for (int i = 0; i < size - 1; i++) {   
         for (int j = i + 1; j < size; j++) {   
             if (numbers[i] < numbers[j]) { //交换两数的位置   
                 temp = numbers[i];   
                 numbers[i] = numbers[j];   
                 numbers[j] = temp;   
             }   
         } 
     }
     for(int i=0;i




选择排序:

       它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。
 //选择排序
 public void SelectSort() {
  int numbers[] = {11,2,87,54,25,32,4,69,10,52};
     int size = numbers.length, temp;
     for (int i = 0; i < size; i++) {
         int k = i;
         for (int j = size - 1; j >i; j--)  {
             if (numbers[j] < numbers[k])  k = j;
         }
         temp = numbers[i];
         numbers[i] = numbers[k];
         numbers[k] = temp;
     }
     for(int i=0;i

插入排序

每步将一个待排序的纪录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。
//插入排序
 public void insertSort() {
  int numbers[] = {45,1,86,2,52,45,24,35,65,25};
     int size = numbers.length, temp, j;   
     for(int i=1; i 0 && temp < numbers[j-1]; j--)   
             numbers[j] = numbers[j-1];   
         numbers[j] = temp;   
     }
     
     for(int i=0;i

直接插入排序

每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。
第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从后向前扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。
直接插入排序是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。内层循环为待比较数值确定其最终位置。直接插入排序是将待比较的数值与它的前一个数值进行比较,所以外层循环是从第二个数值开始的。当前一数值比待比较数值大的情况下继续循环比较,直到找到比待比较数值小的并将待比较数值置入其后一位置,结束该次循环。

//直接插入排序
 public void InsertSort(){  
     int a[]={49,38,65,97,76,13,27,49,12,64,5,4,62,99,35,25,51};  
     int temp=0;  
     for(int i=1;i=0&&temp

希尔排序

希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。
希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。

 //希尔排序 
 public void shellSort(){
  int a[]={1,54,6,3,78,34,12,45,56,100};  
  double d1=a.length;  
  int temp=0;
  while(true){
   d1= Math.ceil(d1/2);
   int d=(int) d1;
   for(int x=0;x=0&&temp

简单选择排序

设所排序序列的记录个数为n。i取1,2,…,n-1,从所有n-i+1个记录(Ri,Ri+1,…,Rn)中找出排序码最小的记录,与第i个记录交换。执行n-1趟 后就完成了记录序列的排序。

简单选择排序算法原理:每次从左至右扫描序列,记下最小值的位置。

简单选择排序是不稳定排序。

 //简单选择排序
 public void selectSort(){  
  int a[]={1,54,6,3,78,34,12,45};  
  int position=0;  
  for(int i=0;i









转载请注明:CodingBlog » 精选推荐 用Java语言实现经常使用算法

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情