快速排序
来源:互联网 发布:chrome 程序员插件 编辑:程序博客网 时间:2024/05/22 00:14
快速排序的思想百度百科中有给出:http://baike.baidu.com/link?url=psrFy8x4mISy5ceWzM0L3VJeY0v9ZDhkSgOL5XIpXmc8R3RyxIZrF8ufbSMqedldyVkljHTKP0KU2iiWGluUNtQzhtgFV2wTzqNguLvvUUeS6e8F6yrYbkjvDbmZwDpQxlVf1VWLnAHqspF7Kg0MQTFHGMItb2mVWraEpBMcdCUgp5U3aJ3gKMhEDhl3LQEKRI7YqbtULL3zjh03EEmzoNMXZeO0AZJov1cLLjJunhI05PnfDvgyz5EO9zztXoWc,这边编写算法的时候,主要是纠结在如何根据一个指定的值分开数组。
#include<stdio.h>#include<stdlib.h>void sort(int arr[], int len);//print the int arrayvoid printArray(int arr[], int len);//swap two value in one arrayvoid swap(int[], int i, int j); int main(){int data[] = {3,2,4,6,7,9,1,8,10,5};//,7,9,2,6,1,8,10};sort(data, 10);printArray(data, 10);}/*say something about the quick sort,first, you find the middle value, and now, you want to keep the samll value to left,and keep bigger value to right.so, what would you do, how can you just put the small value to left and bigger value to right.you can just recode the index of samll value and index of bigger value.and then swap them.*/void sort(int arr[], int len){if(len == 0){return;} int temp = arr[0];int i, j;int mid = 0;i = 0;j = len - 1;//include the length is 0 and 1if(i >= j) return;while(i < j){while(temp < arr[j] && i < j){j--;//find the swap location}//chang the valueif(j == i) break;swap(arr, i, j);mid = j;while(temp > arr[i] && i < j){i++;//find the bigger number}if(i == j)break; //change valueswap(arr, i, j);mid = i;}if(mid > 1) sort(arr, mid);if(len-mid > 1 && mid != 0)sort(arr+mid+1, len - mid-1);}void printArray(int arr[], int len){int i;for(i = 0; i< len; i++){printf("%d,", arr[i]);}printf("\n");}void swap(int arr[], int i, int j){int temp ;temp = arr[i];arr[i] = arr[j];arr[j] = temp;}
0 0
- 快速排序
- 快速排序
- 快速排序
- 快速排序!
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- 快速排序
- C语言经典算法03
- MySQL Select-Order by
- Git 入门笔记(一)
- install ubuntu
- 二级指针和指针引用函数传参(C++)
- 快速排序
- 斐波那契数列的应用(算法实现)
- git的学习第一步之----将自己的Java工程上传到github中
- Web SQL注入攻击
- C语言经典算法04
- Eclipse中导入Maven Web项目并配置其在Tomcat中运行
- ds1302的使用
- mongoDB 文档查询
- SCAU10690 分面包