C语言经典算法大全

  • 格式:docx
  • 大小:37.21 KB
  • 文档页数:5

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);

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语言算法有所帮助,谢谢!