單鏈表的排序(選擇排序)
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