016 單鏈表的選擇排序

2021-09-20 03:29:20 字數 964 閱讀 9206

package com.my.util;

/** * 單向鍊錶節點

* */

public

class

singlenode

}

package com.my.suanfa;

import com.my.util.singlenode;

/** * 單鏈表的選擇排序

* 時間複雜度o(n^2),額外空間複雜度o(1)

* 時間複雜度與選擇排序一樣都是o(n^2)

* 因為要求空間複雜度為o(1),因此不能用其他的資料結構,只能利用有限幾個變數在原煉表上完成排序

* */

public

class

solution13

//small == cur 說明該節點不是未排序部分的最小節點,那麼未排序部分的第乙個節點還是該節點,否則未排序部分的第乙個節點是該節點的下乙個節點

cur = cur == small ? cur.next : cur;

//此時已找到未排序部分的最小節點,將此節點連線到已排序部分的尾部

if(tail == null)

else

//此時的small為排序部分的最後乙個節點

tail = small;

}//返回新的頭節點

return head;

}/**

* 該方法用來找到鍊錶的最小值,並返回最小值的前乙個節點

* */

public singlenode getsmallestprenode

(singlenode head)

//當前遍歷的節點向後移動一位

pre = cur;

cur = cur.next;

}//返回最小節點的前乙個節點

return smallpre;

}}

單鏈表的排序 選擇排序

雖然鍊錶排序沒有多大的用處,但是還是可以看看.經典演算法 單鏈表選擇排序第一種 include include typedef struct node linklist,node linklist creat int n r next null return head void output lin...

單鏈表的選擇排序

給定乙個無序單鏈表,實現單鏈表的選擇排序 按公升序排序 注釋挺詳細,直接上 include include struct node void printlist struct node head struct node selectsort struct node head 選擇排序 在原煉表中一輪...

單鏈表之排序單鏈表

package list public class sortedsinglylist extends singlylist 將values陣列中的所有物件按值大小插入 public sortedsinglylist t values 過載深拷貝,由單鏈表構建排序單鏈表 public sortedsi...