生活随笔
收集整理的这篇文章主要介绍了
冒泡排序和鸡尾酒排序(改进的冒泡排序)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
冒泡排序
冒泡排序是最基本的排序算法,也是排序算法中的经典的算法,也是比较简单、容易理解的算法,而且还可以对其排序过程进行优化。
冒泡排序排序过程总是大数往前放,小数往后放,相当于气泡往上升,所以称作冒泡排序。
- 算法思想:
依次比较相邻的两个数,将大数放在前面,小数放在后面,即首先比较第1个和第2个数,将大数放前,小数放后。然后比较第2个数和第3个数,将大数放前,小数放后,如此继续,直至比较最后两个数。此时第1轮结束,如此在第1轮之后位于最后的数必是所有数中自小的。然后使用上一轮的结果重复以上过程,直到所有的数都已经最小时算法结束。 - 算法实现:
#include <stdio.h>int main(
void){
int i, j, temp;
int arr[] = {
1,
2,
3,
4,
5,
6,
7,
8,
9,
10};
int n =
sizeof(arr) /
sizeof(
int);
for(i = n -
1; i >=
0; i--){
for(j =
0; j < i; j++){
if(arr[j +
1] > arr[j]){temp = arr[j];arr[j] = arr[j +
1];arr[j +
1] = temp;}}}
for(i =
0; i < n; i++){
printf(
"%d ", arr[i]);}
printf(
"\n");
return 0;
}
鸡尾酒排序
- 算法思想:
还有一种改进的冒泡排序,算法思想是对要排序的数组进行双向冒泡排序,双向冒泡排序又称为鸡尾酒排序。 - 算法实现:
#include <stdio.h>void CocktailSort(
int *arr,
int size);
void PrintArr(
int *arr,
int size);
int main(
void){
int arr[] = {
0,
1,
2,
3,
4,
5,
6,
7,
8,
9};
int n =
sizeof(arr) /
sizeof(
int);CocktailSort(arr, n);PrintArr(arr, n);
return 0;
}
void CocktailSort(
int *arr,
int size){
int i, temp;
int low, up;low =
0, up = size -
1;
while(up > low){
for(i = up; i > low; i--){
if(arr[i] > arr[i -
1]){temp = arr[i];arr[i] = arr[i -
1];arr[i -
1] = temp;}}low++;
for(i = low; i < up; i++){
if(arr[i +
1] > arr[i]){temp = arr[i];arr[i] = arr[i +
1];arr[i +
1] = temp;}}up--;}
}
void PrintArr(
int *arr,
int size){
int i;
for(i =
0; i < size; i++){
printf(
"%d ", arr[i]);}
printf(
"\n");
}
总结
以上是生活随笔为你收集整理的冒泡排序和鸡尾酒排序(改进的冒泡排序)的全部内容,希望文章能够帮你解决所遇到的问题。
如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。