c++ 数组排序(选择, 冒泡, 插入,快速)

来源:互联网 发布:知错改错不认错的说说 编辑:程序博客网 时间:2024/05/18 00:04
#include<iostream>using namespace std;//冒泡排序void bubbleSort(int arr[], int n){for(int i = 0;i < n;i++){  //比较两个相邻的元素   for(int j = 0;j < n-i-1;j++){              if(arr[j] > arr[j+1]){                  int t = arr[j];                  arr[j] = arr[j+1];                  arr[j+1] = t;              }          }      }       }//选择排序void choiceSort(int arr[], int n){  for(int i = 0;i < n; i++){  int m = i;          for(int j = i + 1;j < n;j++){              //如果第j个元素比第m个元素小,将j赋值给m   if(arr[j] < arr[m]){                  m = j;              }          }          //交换m和i两个元素的位置   if(i != m){              int t = arr[i];              arr[i] = arr[m];              arr[m] = t;  }      }  }  //插入排序void insertSort(int arr[], int n){  for(int i = 1;i < n;i++){  int temp = arr[i];  int j = i - 1;  while(temp < arr[j]){  arr[j+1] = arr[j];  j--;  if(j == -1){  break;  }  }  arr[j+1] = temp;  }  }  //快速排序 void quickSort(int *arr,int l,int r){//此处编写代码实现快速排序int i,j,x,temp;if(l<r){i=l;j=r;x=arr[(l+r)/2]; //以中间元素为轴 while(1){while(i<=r&&arr[i]<x)i++;while(j>=0&&arr[j]>x)j--;if(i>=j) //相遇则跳出 break;else{temp=arr[i];arr[i]=arr[j];arr[j]=temp; //交换 }}quickSort(arr,l,i-1); //对左半部分进行快排 quickSort(arr,j+1,r); //对右半部分进行快排 }}int main(){int i;int a[] = {9, 8, 7, 6, 5, 4, 3, 2, 1, 10};//bubbleSort(a,10);//choiceSort(a,10);//insertSort(a,10);quickSort(a, 0, 9);for(i=0;i<=9;i++){cout<<a[i]<<' ';}return 0;}

0 0
原创粉丝点击