C语言经典算法大全
1.冒泡排序算法
冒泡排序是一种简单但低效的排序算法,它通过多次遍历列表,比较相邻元素并交换位置,直到整个列表有序。冒泡排序的时间复杂度为O(n^2)。
```
void bubbleSort(int arr[], int n)
for (int i = 0; i < n-1; i++)
for (int j = 0; j < n-i-1; j++)
if (arr[j] > arr[j+1])
//交换元素
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
```
2.选择排序算法
选择排序是一种简单但高效的排序算法,它通过多次遍历列表,到最小元素并将其放置在正确的位置上。选择排序的时间复杂度也为O(n^2)。
```
void selectionSort(int arr[], int n)
int minIndex, temp;
for (int i = 0; i < n-1; i++)
minIndex = i;
for (int j = i+1; j < n; j++)
if (arr[j] < arr[minIndex])
minIndex = j;
}
}
//交换元素
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
```
3.插入排序算法
插入排序是一种简单但高效的排序算法,它通过将未排序的元素插入到已排序的列表中,逐步构建排序好的列表。插入排序的时间复杂度为O(n^2)。
```
void insertionSort(int arr[], int n)
int i, key, j;
for (i = 1; i < n; i++)
key = arr[i];
j=i-1;
while (j >= 0 && arr[j] > key)
arr[j + 1] = arr[j];
j=j-1;
}
arr[j + 1] = key;
}
```
4.快速排序算法
快速排序是一种高效的排序算法,它通过选择一个主元,将列表分割为两个子列表,其中一个子列表的所有元素都小于主元,另一个子列表的所有元素都大于主元。然后递归地对
两个子列表进行排序。快速排序的时间复杂度为O(nlogn)。
```
void quickSort(int arr[], int low, int high)
if (low < high)
int pi = partition(arr, low, high);
c语言的冒泡排序算法
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
int partition (int arr[], int low, int high)
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j <= high- 1; j++)
if (arr[j] < pivot)
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
void swap(int* a, int* b)
int t = *a;
*a=*b;
*b=t;
```
以上仅列举了一些经典的C语言算法,还有很多其他种类的算法,如归并排序、堆排序、二分查等等。掌握这些算法可以帮助程序员更好地处理各种编程问题。
希望本篇文章对大家了解C语言算法有所帮助,谢谢!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。