基本排序方法(c++)
来源:互联网 发布:流光5.0 软件解压密码 编辑:程序博客网 时间:2024/06/05 12:42
#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;}
阅读全文