ÎÞÍâºõÊÇðÅÝ¡¢Ñ¡Ôñ¡¢²åÈëµÈÅÅÐò·½·¨¡£¹Ø¼üÊǽ»»»Ëã·¨£¬ÐèÒª¶îÍ⿼ÂÇ¡£µÚ7ÌâÎÒ±àдÁËÒ»¸ö½»»»Ëã·¨£¬ÔÚ±¾ÌâµÄÅÅÐò¹ý³ÌÖУ¬ÎÒÃÇ¿ÉÒÔÔÚÍâ²ãºÍÄÚ²ãÑ»·ÀïÃæ£¬²¶×½µ½pre1ºÍpre2£¬È»ºó½øÐн»»»£¬¶øÎÞÐèÿ´Î½»»»ÓÖÒª±éÀúÒ»´Îµ¥Á´±í¡£
ÔÚʵ¼ùÖУ¬ÎÒ·¢ÏÖðÅÝÅÅÐòºÍÑ¡ÔñÅÅÐò¶¼ÒªÇóÄÚ²ãÑ»·´ÓÁ´±íµÄĩβÏòǰ×ߣ¬ÕâÃ÷ÏÔÊDz»ºÏʱÒ˵ġ£
ËùÒÔÎÒ×îÖÕÑ¡ÔñÁ˲åÈëÅÅÐòËã·¨£¬ÈçÏÂËùʾ£º
Ïȸø³ö»ùÓÚÊý×éµÄËã·¨£º
´úÂë
static int[]
InsertSort(int[] arr)
{
for(int i=1; i
{
for(int j =i; (j>0)&&arr[j]
{
arr[j]=arr[j]^arr[j-1];
arr[j-1]=arr[j]^arr[j-1];
arr[j]=arr[j]^arr[j-1];
}
}
return arr;
}
·ÂÕÕÉÏÃæµÄ˼Ï룬ÎÒÃÇÀ´±àд»ùÓÚLinkµÄËã·¨£º
public static Link SortLink(Link head)
{
Link pre1 = head;
Link pre2 = head.Next;
Link min = null;
for (Link curr1 = head.Next; curr1 != null; curr1 = min.Next)
{
if (curr1.Next == null)
break;
min = curr1;
for (Link curr2 = curr1.Next; curr2 != null; curr2 = curr2.Next)
{
//swap curr1 and curr2
if (curr2.Data < curr1.Data)
{
min = curr2;
curr2 = curr1;
curr1 = min;
pre1.Next = curr1;
curr2.Next = curr1.Next;
curr1.Next = pre2;
//if exchange element n-1 and n, no need to add reference from pre2 to curr2, because they are the same one
if (pre2 != curr2)
pre2.Next = curr2;
}
pre2 = curr2;
}
pre1 = min;
pre2 = min.Next;
}
return head;
}
ÖµµÃ×¢ÒâµÄÊÇ£¬ºÜ¶àÈ˵ÄËã·¨²»Äܽ»»»ÏàÁÚÁ½¸öÔªËØ£¬ÕâÊÇÒòΪpre2ºÍcurr2ÊÇÏàµÈµÄ£¬Èç¹û´Ëʱ»¹Ö´ÐÐpre2.Next = curr2; »áÔì³ÉÒ»¸ö×Ô¼ºÒýÓÃ×Ô¼ºµÄ»·¡£
½»»»Ö¸ÕëºÜÊÇÂé·³£¬¶øÇÒЧÂÊÒ²²»¸ß£¬ÐèÒª¾³£ÅÅÐòµÄ¶«Î÷×îºÃ²»ÒªÓÃÁ´±íÀ´ÊµÏÖ£¬»¹ÊÇÊý×éºÃһЩ¡£