1. 程式人生 > >單鏈表的排序(選擇排序)

單鏈表的排序(選擇排序)

:/n");
for(i=n;i>0;i--)
{scanf("%d",&x);
p=(Node*)malloc(sizeof(Node));
p->data=x;
r->next=p;
r=p;}
r->next=NULL;
return head;
} Linklist selectsort(Node *g)
{ Node *p,*q,*t,*s,*h;
h=(Node *)malloc(sizeof(Node));
h->next=g;
p=h;
while(p->next->next!=NULL)
{
for(s=p,q=p->next;q->next!=NULL;q=q->next)
if(q->next->data<s->next->data)
s=q;
if(s!=q)
{
t=s->next;
s->next=t->next;
t->next=p->next;
p->next=t;
}
p=p->next;
}
g=h->next;
free(h);
return g;
} void output(Linklist head)
{Linklist p;
p=head->next;
do{
printf("%3d",p->data);p=p->next;
}while(p);
printf("/n");
} void main()
{Linklist head;
int x,j,n;
printf("

相關推薦

迴圈單鏈簡單選擇排序

#include <stdio.h> #include <stdlib.h> typedef struct LNode{ int data ; struct LNode *next ; }LNode , *LinkList; Lin

單鏈排序(選擇排序)

:/n"); for(i=n;i>0;i--) {scanf("%d",&x); p=(Node*)malloc(sizeof(Node)); p->data=x; r->next=p; r=p;} r->next=NULL; return head; } Linklist s

面試題—用選擇排序法對單鏈進行升序排序

演算法描述: 定義指標p和q,p用來遍歷指標,q為聯動指標。  定義pmax和qmax。pmax指向當前連結串列中值最大的結點,qmax指向值最大結點的前驅結點 用指標p遍歷連結串列head找出當前連結串列中的值最大的結點,用pmax指向該結點。然後利用qmax將該最大值

Java實現單鏈的快速排序和歸並排序

解法 nod sin fonts 但是 二叉 復雜 sort tno 本文描述了LeetCode 148題 sort-list 的解法。 題目描述如下: Sort a linked list in O(n log n) time using constant space c

單鏈的快速排序

單鏈表的特點是:單向。 設頭結點位head,則最後一個節點的next指向NULL。如果只知道頭結點head,請問怎麼將該連結串列排序?                設結點結構為 struct Node{ int key;

單鏈通訊錄(排序

標頭檔案: #ifndef _ADRESS_H #define _ADRESS_H #define SUCCESS 10000 #define FAILURE 10001 #define TURE 10003 #define FALSE 10004 struct adress {

單鏈的快速排序演算法及其實現

今天聽同學面友錄說道單鏈表是否可以用快速排序演算法,想起自己面百度一面的時候面試官也面到這個問題,由於本人是個小菜鳥,所以花了一個下午的時間整理了一下。 演算法思想:對於一個連結串列,以head節點

經典演算法學習——單鏈實現氣泡排序(帶頭結點)

核心程式碼如下:Node *BubbleSort(Node *pNode){ int count = SizeList(pNode);//用來控制次數 Node *pMove;

C語言:用單鏈實現輸入排序

純當練習 連結串列頭結點儲存的資訊是連結串列長度 平臺VS2015 #include<stdio.h> #include<stdlib.h> #include<time.h> struct ListNod

資料結構—單鏈—直接插入排序

有一個帶頭節點的單鏈表L(至少有一個數據節點),設計一個程式使其元素呈遞增有序排列 。 思路:     先構造一個只含有一個數據節點的有序表。然後掃描單鏈表L餘下的節點*p(直到p為NULL為止),在有序表中通過比較找插入*p節點的前驅節點*pre,然後在*pre節點之後插

單鏈進行重排序

要求:形式如L0->L1->L2->L3-> ... ->Ln-1->Ln,要求重新排序成如下形式:L0->Ln->L1->Ln-1->…… 如給定連結串列為1->2->3->4->5->6,則重新排序後的結果為1

單鏈的歸併排序

Question: 148. Sort List Sort a linked list in O(n log n) time using constant space complexity. 中文:使用恆定的空間複雜度排序一個連結串列,要求時間複雜度是O(n

Java單鏈實現快速排序

普通快排的思路 選擇1個結點為中心點,保證中心點左邊比中心點小,中心點右邊比中心點大即可。這就是一次快排,確定一個數的正確位置,然後進行遞迴。 單鏈表的實現為 使第一個節點為中心點 建立2個

單鏈實現氣泡排序演算法(C實現)

本實現主要採用交換指標的方法,其中附加有單鏈表及其相關的實現 #include <stdio.h> struct Node; typedef struct Node *PtrToNode; typedef PtrToNode List; typedef Pt

算法大神之路----排序(選擇排序法)

system 一個數 數組 public 由於 空間復雜度 結果 代碼 選擇 選擇排序法,顧名思義,就是把特定的數據選擇出來進行排序. 選擇排序法有兩種方式 在所有的數據中,當由大到小排序,那麽就將最大值放到第一個位置 如果由小到大排序,那麽就將最小值放到第一個位置 以由

排序——選擇排序、快速排序

關鍵字 justify 位置 type amp 選擇 兩個 center 們的 知識點總結報告 知識點: 選擇排序 (原理)基本思想:第i趟排序開始時,當前有序區和無序區分別為R[0...i-1]和R[i..n-1](0<=i<n-1),該趟排序是從當前無序

冒泡排序,選擇排序,math,Random,System

time 四舍五入 虛擬機 得到 排序 pri ceil ray [] //冒泡排序public class MathGroup {public static void main(String[] args) {int[] arr= {13,43,25,36,45};for

java_之排序--選擇排序

今天心情稍微有點兒不好,沒關係,寫程式碼吧,轉移注意力。 1.選擇排序: 在一組待排序的數當中,去選擇待排序的數當中,數最小的那個數,然後將整個數放在第一個位置,然後在剩下的待排序的數當中,去選擇數值最小的數然後放到第二個數的位置,依次進行排序比較,直到倒數第二小的數和最大的數進行比較位置。

Java 知識點整理-7.StringBuffer類+氣泡排序+選擇排序+二分法+Arrays類+基本資料型別的包裝類

1、StringBuffer類概述:執行緒安全的可變字元序列,一個類似於String的字串緩衝區,但不能修改(不能像String那樣用加號與其他型別資料連線),但通過某些方法呼叫可以改變該序列的長度和內容。java.lang包下,使用時不用導包。final修飾,不能有子類。 2、StringBu

經典基礎排序之直接排序,選擇排序,氣泡排序.

直接排序: Collection.sort(lista,new Comparator<Person>() { }); Arrays.sort(arraya,new Comparator<Integer>() { });) 選擇排序: --陣列 public static vo