排序算法一

来源:互联网 发布:淘宝天猫旗舰店申请 编辑:程序博客网 时间:2024/05/17 22:09


3个简单的排序算法,不多解释了,直接上代码:

#include <stdio.h>#include <stdlib.h>void Display(int a[], int n){for (int i = 0; i< n; ++i){printf("%d, ", a[i]);}printf("\n");}void Exchange(int a[], int i, int j){int tmp = a[i];a[i] = a[j];a[j] = tmp;}//冒泡排序void popSort(int a[], int n){bool tag = true;for (int i = 0; i< n && tag; ++i){tag = false;for (int j = 0; j< n-i-1 ; j++){if(a[j]< a[j+1]){//不断的交换到适合的位置Exchange(a, j , j+1);tag = true;}}//end for j}printf("popSort...\n");Display(a, n);}//选择排序void SelectSort(int a[], int n){for (int i = 0; i< n; ++i){int j =i;for (int k = i; k< n; ++k){//经过比较,选择出最值的下标if(a[k] < a[j])j = k;}if(j != i)Exchange(a, i, j);}printf("SelectSort...\n");Display(a, n);}//插入排序//(参考链表的插入排序,是假设分成2个链表来排序的)  void InsertSort(int a[], int n)  {  for (int i = 0; i< n; ++i)  {  //在原有数组中取出元素  int tmp = a[i];  int j =0;  //放到一个有序数组中  for (j = i-1; j>=0&&(tmp > a[j]); --j)  {  a[j+1] = a[j];  }   a[j+1] = tmp;  }  printf("InsertSort...\n");  Display(a, n);  }int main(){int a[6] = {5, 4, 3, 2, 1, 9};popSort(a, 6);SelectSort(a, 6);InsertSort(a, 6);system("pause");return 0;}


0 0
原创粉丝点击