JAva:チェーンテーブルのソート
2896 ワード
タイトル説明:Sort a linked list using insertion sort.挿入ソートを使用してチェーンテーブルをソートする
【考え方】:挿入ソートを用いてソートを挿入する基本的な操作は、1つのデータを並べ替えられたソートデータに挿入し、新しい、個数に1を加えたソートデータを得ることであり、アルゴリズムは少量のデータのソートに適用され、時間複雑度はO(n^2)である.安定したソート方法です.挿入アルゴリズムは、ソートする配列を2つの部分に分けます.第1の部分には、この配列のすべての要素が含まれていますが、最後の要素を除いて(配列の複数の空間に挿入された位置があるようにします)、第2の部分には、この要素(すなわち、挿入される要素)しか含まれていません.最初の部分のソートが完了したら、最後の要素をソートされた最初の部分に挿入します.
ソートを挿入する基本的な考え方は、ステップごとにソートされるレコードをキー値の大きさで前にソートされたファイルの適切な位置に挿入し、すべて挿入が完了するまで挿入することです.
//コードは自己参照http://blog.csdn.net/u012249528/article/details/47151847
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode insertionSortList(ListNode head) {
}
}
【考え方】:挿入ソートを用いてソートを挿入する基本的な操作は、1つのデータを並べ替えられたソートデータに挿入し、新しい、個数に1を加えたソートデータを得ることであり、アルゴリズムは少量のデータのソートに適用され、時間複雑度はO(n^2)である.安定したソート方法です.挿入アルゴリズムは、ソートする配列を2つの部分に分けます.第1の部分には、この配列のすべての要素が含まれていますが、最後の要素を除いて(配列の複数の空間に挿入された位置があるようにします)、第2の部分には、この要素(すなわち、挿入される要素)しか含まれていません.最初の部分のソートが完了したら、最後の要素をソートされた最初の部分に挿入します.
ソートを挿入する基本的な考え方は、ステップごとにソートされるレコードをキー値の大きさで前にソートされたファイルの適切な位置に挿入し、すべて挿入が完了するまで挿入することです.
ListNode fakeNode=new ListNode(-1);
fakeNode.next=head;
if(head==null)
return null;
ListNode cur=head.next;//
ListNode pre=head;//
while(cur!=null)
{
if(cur.valval)
{
ListNode nextNode=cur.next;//
//
ListNode cur2=fakeNode.next;
ListNode temp=fakeNode;// cur2
while(cur.val>cur2.val&&cur2!=pre)
{
temp=cur2;
cur2=cur2.next;
}
//
temp.next=cur;
cur.next=cur2;
pre.next=nextNode;
//
cur=nextNode;
}
else {
pre=cur;
cur=cur.next;
}
}
return fakeNode.next;
//コードは自己参照http://blog.csdn.net/u012249528/article/details/47151847