基本思想:比較相鄰的兩個數,如果前者比後者大,則進行交換。每一輪排序結束,選出乙個未排序中最大的數放到陣列後面。
#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 的額外空間的排序 因而在從後向前掃瞄過程中,需要反覆把已排...