JAVA数据结构和算法(第三章)学习笔记

-------------------------------
一、冒泡排序

1、前提:
2、关键算法:

 int out, in;
for(out=nElems-1; out>1; out--){ // outer loop (backward)
for(in=0; in if( a[in] > a[in+1] ) // out of order?
swap(in, in+1); // swap them
}

3、优缺点:优点是简单,缺点是慢
  4、效率: O(N*N)

--------------------------------------
二、选择排序

1、前提:
2、关键算法:
 
   int out, in, min;
  for(out=0; out {
min = out; // minimum
for(in=out+1; in if(a[in] < a[min] ) { // if min greater,
min = in; // we have a new min
}
swap(out, min); // swap them
} // end for(out)
 

3、优缺点:优化了冒泡的交换操作
  4、效率: 比较操作O(N*N),交换操作约N
--------------------------------------
三、插入排序

1、前提:在数据局部是有序的情况下,使用效果好
2、关键算法:
 
    int in, out;
for(out=1; out {
long temp = a[out]; // remove marked item   取出临时变量
in = out; // start shifts at out
while(in>0 && a[in-1] >= temp) // until one is smaller, 与N-1变量比较,如果N-1大于TEMP,则N-1向后移动一步 
{
a[in] = a[in-1]; // shift item to right
--in; // go left one position  改变指针,继续向前比较
}
a[in] = temp; // insert marked item   临时变量新的位置
} // end for
 

3、优缺点:相对于冒泡优化了比较与交换
  4、效率: 最差O(N*N),最好O(N)
--------------------------------------

你可能感兴趣的:(技术)