qsort應用及冒泡法實現MyQsort

2021-09-24 09:06:47 字數 2016 閱讀 9793

在c語言中,對一組資料進行排列,可以採用冒泡法和選擇法,還有c語言編譯器函式庫自帶的快速排序函式。下面的三部分**,分別採用了qsort,冒泡法排序,以及用冒泡法的原理實現myqsort。

引數分別是:待排序陣列首位址,陣列長度,各元素所佔空間大小,指向函式的指標。

#include

#include

intint_cmp

(const

void

*elem1,

const

void

*elem2)

intmain()

;int i =0;

int len =

sizeof

(arr)

/sizeof

(arr[0]

);qsort

(arr, len,

sizeof

(int

), int_cmp)

;for

(i =

0; i < len; i++

)printf

("\n");

system

("pause");

return0;

}

要提到的一點將**優化。如果一組數本身就是有序的,或這在排序的過程中已經有序了,不需要一直排序到最後一步。**如下:

void

bubble_sort

(int

* arr,

int len)}if

(flag ==0)

}}intmain()

;int i =0;

int len =

sizeof

(arr)

/sizeof

(arr[0]

);bubble_sort

(arr, len)

;for

(i =

0; i < len; i++

)printf

("\n");

system

("pause");

return0;

}

因為myqsort要實現的不僅是int型別的陣列,還有char,double……所以要將其強制轉換為(char*)型別,要換成什麼型別,直接乘size。

//交換函式

void

swap

(const

void

*elem1,

const

void

*elem2,

int size)

}int

int_cmp

(const

void

*elem1,

const

void

*elem2)

void

myqsort

(void

*base,

int len,

int size,

int(

*p)(

const

void

*elem1,

const

void

*elem2))}

}}intmain()

;int i =0;

int len =

sizeof

(arr)

/sizeof

(arr[0]

);myqsort

(arr, len,

sizeof

(int

),int_cmp)

;for

(i =

0; i < len; i++

)printf

("\n");

system

("pause");

return0;

}

冒泡法原理及實現

第一次接觸排序演算法,簡單寫一下實現原理。先看一道例題 使用者輸入十個資料,將資料從大到小輸出。輸入樣例 1 30 23 56 0 199 23 45 78 200 輸出樣例 200 23 0 1 23 30 45 56 78 199 這裡使用冒泡法。別的排序目前我也不太會 示例 includein...

有關qsort的應用以及氣泡排序的實現

功 能 使用快速排序例程進行排序 標頭檔案 stdlib.h 用 法 void qsort void base,size t num,元素個數 size t width,每個元素的大小 int cdecl compare const void elem1,const void elem2 compa...

彙編實現冒泡法排序及優化

冒泡法排序 氣泡排序的基本思想是,對相鄰的元素進行兩兩比較,順序相反則進行交換,這樣,每一趟會將最小或最大的元素 浮 到頂端,最終達到完全有序。但是這種冒泡法排序卻有很大的弊端 可以看見在第一次排序後雖然最大的數字被移動到了最右的位置,但是這輪排序對其他的數字並沒有造成有益的影響,甚至第二大的數字8...