linux c排序演算法

2021-10-07 00:27:10 字數 3086 閱讀 2624

基本思想:比較相鄰的兩個數,如果前者比後者大,則進行交換。每一輪排序結束,選出乙個未排序中最大的數放到陣列後面。

#include

#include

intmain()

;printf

("please input eight number: ");

for( i =

0; i <

8; i++

)for

( i =

0; i <

8; i++

)for

(j =

7; j >

0; j--)}

}putchar

('\n');

for( i =

0; i <

8; i++

)return0;

}

#include

//公升級版氣泡排序演算法

void

bubblesort_1

(int

*arr,

int n)

}--right;

//從右到左遍歷選出最小的數放到陣列左邊

for(

int j = right;j> left; j--)}

++left;}}

intmain()

;int n =

sizeof

(arr)

/sizeof

(int);

bubblesort_1

(arr, n)

;printf

("排序後的陣列為:\n");

for(

int j =

0; j)printf

("%d "

, arr[j]);

printf

("\n");

return0;

}

基本思想:依次選出陣列最小的數放到陣列的前面。首先從陣列的第二個元素開始往後遍歷,找出最小的數放到第乙個位置。再從剩下陣列中找出最小的數放到第二個位置。以此類推,直到陣列有序

#include

#include

intmain()

, max, index;

printf

("please input eight number: ");

for( i =

0; i <

8; i++

)for

( i =

0; i <

8; i++

)for

(j =

7; j >

0; j--)}

/*num[j] ^= num[index];//這方法把相同的數會成0

num[index] ^= num[j];

num[j] ^= num[index];*/

num[index]

= num[j]

; num[j]

= max;

}putchar

('\n');

for( i =

0; i <

8; i++

)return0;

}

基本思想:和交換排序不同的是它不用進行交換操作,而是用乙個臨時變數儲存當前值。當前面的元素比後面大時,先把後面的元素存入臨時變數,前面元素的值放到後面元素位置,再到最後把其值插入到合適的陣列位置。

#include

//自定義的輸出函式

void

print

(int a,

int i)

printf

("\n");

}//直接插入排序函式

void

insertsort

(int a,

int n)

a[j+1]

= x;

//插入到正確位置

}print

(a,i)

;//列印每次排序後的結果}}

intmain()

;insertsort

(a,8);

return0;

}

基本思想:選取乙個基準元素,通常為陣列最後乙個元素(或者第乙個元素)。從前向後遍歷陣列,當遇到小於基準元素的元素時,把它和左邊第乙個大於基準元素的元素進行交換。在利用分治策略從已經分好的兩組中分別進行以上步驟,直到排序完成。下圖表示了這個過程。

#include

#include

void

swap

(int

*num1,

int*num2)

intzone

(int

*a,int left,

int right)

}swap

(&a[right]

,&a[

++i]);

return i;

}void

quicksort

(int

*a,int left,

int right)

int mid =

zone

(a, left, right)

;quicksort

(a, left, mid -1)

;quicksort

(a, mid +

1, right);}

intmain()

;int n =

sizeof

(a)/

sizeof

(int);

quicksort

(a,0

, n -1)

;printf

("排序後資料:");

for(

; i < n; i++

)putchar

('\n');

return0;

}

Linux C希爾排序演算法實現

希爾排序 shell s sort 是插入排序的一種又稱 縮小增量排序 diminishing increment sort 是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。該方法因d.l.shell於1959年提出而得名 注 建議先學習插入排序演算法,再產學習希爾排序演算法...

Linux C學習筆記 排序演算法4 快速排序

設要排序的陣列是a 0 a n 1 首先任意選取乙個資料 通常選用第1個資料 作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。值得注意的是,快速排序不是一種穩定的排序演算法,也就是說,多個相同的值的相對位置也許會在演算法結束時產生變動。一趟快速排...

Linux C學習筆記 排序演算法1 插入排序

插入排序 insertion sort 的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,通常採用in place排序 即只需用到o 1 的額外空間的排序 因而在從後向前掃瞄過程中,需要反覆把已排...