`
blueyanghualong
  • 浏览: 221838 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

冒泡排序 整理

阅读更多

 


毕业很久长时间了 ,突然发现冒泡排序都写不出来  

public class SortName {

public static void main(String[] args) {

   int[] intSort={5,76,2,33,55,11,400,555,933,10,3,5,33333333,5555,222222233};

//对一个数组进行排序

  sortToArray(intSort);

}


/**

* @param intSort  需要排序的数组

* 数组排序算法 我一直记不清楚的 for循环应执行几次

* 这个可以把握住一点 也就是 外层控制循环只是控制 跑几趟  升序/降序 皆可

* 内层控制 相邻两个数进行比较 并且 并且第一趟即可确定 最后一个数 肯定是这个数组中最大的 依次类推 

* 变能推算出 内层循环的次数与表达方式

* @since 2011-01-10

*/

private static void sortToArray(int[] intSort) {

/**

 * 冒泡排序故名就是将小数往前排 大数往后排

 * 首先比较第一个数与第二个数 如果将小的替换位置 在比较第二个与第三个数 再次替换位置 

 * 依次排序到最后 此时唯一能确定的是 最大的数 在最后一位 这样第一趟排序结束

 * 

 * 第二趟开始:

 *  首先再次比较 第一个数 与第二个数 如果大的 将依次往后推 这样只要排到倒数第二个数 即可停止

 *  倒数 第一  与第二个数已经排序成功

 * 

 * 第三趟开始 :

 * 

 * 

 */

// //外层控制跑几趟

// for (int i =intSort.length;i>0; i--) {

//    //内层控制两个数从头开始 两两比较 并换位

// for (int j = 0; j < i-1; j++) {

// //如果第一个数大于第二个 这需要换位置

// /*第二个与第三个数比较*/ 

// /*第三个与第四个数比较*/

// /*如果是5个数 第一趟应该是要比较4次  i=5 ,j=4 int[4]被排序*/ 

// /*如果是5个数 第2趟应该是要比较前4个数据即可 也就是说需要比较3次 i=4 j=3 int[3]被排序 */

// /*如果是5个数 第3趟应该是要比较前3个数据即可 也就是说需要比较2次 i=2 j=2 int[2]被排序 */

// if (intSort[j]>intSort[j+1]) {

// int temp=intSort[j+1];

// intSort[j+1]=intSort[j];

// intSort[j]=temp;

// }

// }

// }

//外层控制跑几趟

for (int i =0;i<intSort.length; i++) {

   //内层控制两个数从头开始 两两比较 并换位

for (int j = 0; j < intSort.length-1-i; j++) {

//如果第一个数大于第二个 这需要换位置

/*第二个与第三个数比较*/ 

/*第三个与第四个数比较*/

/*如果是5个数 第一趟应该是要比较4次  i=0,j=4 int[4]被排序*/ 

/*如果是5个数 第2趟应该是要比较前4个数据即可 也就是说需要比较3次 i=1 j=3 int[3]被排序 */

/*如果是5个数 第3趟应该是要比较前3个数据即可 也就是说需要比较2次 i=2 j=2 int[2]被排序 */

if (intSort[j]>intSort[j+1]) {

int temp=intSort[j+1];

intSort[j+1]=intSort[j];

intSort[j]=temp;

}

}

}

for (int i = 0; i < intSort.length; i++) {

System.out.print(intSort[i]+",");

}

}

}

 



===============================

===============================

下面看到一个 实现链表 插入 排序的代码 顺便Copy下来研究一下


 

Node head = null;

Node point = null;

Node newNode = null;

public int Count = 0;//统计值

//插入

public void AddNode(int t) {

 newNode = new Node();

 if (head == null) {

  head = newNode;

 } else {

  point = head;

  while (point.next != null) {

   point = point.next;

  }

  point.next = newNode;

 }

 point = newNode;

 point.vlaue = t;

 point.next = null;

 Count++;

}

//返回值

public int GetValue(int i) {

 if (head == null || i < 0 || i > Count)

  return -999999;

 int n;

 Node temp = null;

 point = head;

 for (n = 0; n <= i; n++) {

  temp = point;

  point = point.next;

 }

 return temp.vlaue;

}

//删除

public void DeleteNode(int i) {

 if (i < 0 || i > Count) {

  return;

 }

 if (i == 0) {

  head = head.next;

 } else {

  int n = 0;

  point = head;

  Node temp = point;

  for (n = 0; n < i; n++) {

   temp = point;

   point = point.next;

  }

  temp.next = point.next;

 }

 Count--;


}

//排序

public void Sotr() {

 for (Node i = head; i != null; i = i.next) {

  for (Node j = i.next; j != null; j = j.next) {

   if (i.vlaue > j.vlaue) {

    int t = i.vlaue;

    i.vlaue = j.vlaue;

    j.vlaue = t;

   }

  }

 }

}

}


class Node {

int vlaue;

Node next;

}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics