12-09关于几种排序方式
一.選擇排序
#include <stdio.h>
//選擇排序 //記錄最小的那個數的索引值
//下面這個循環就是去尋找最小的那個數的index
//有比k對應的值更小的
//判斷是否需要交換
//k和i對應的值交換
void selectsort(int array[],int counttimes){
? ? int k = 0;
? ? for (int i = 0; i < counttimes - 1; i++) {
? ? ? ? int? k = i ;
? ? ? ? for (int j =i +1; j < counttimes; j ++) {
? ? ? ? ? ? if (array[k] >array[j]) {
? ? ? ? ? ? ? ? k = j ;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? int temp;
? ? ? ? if (k != i) {
? ? ? ? ? ? temp = array[i];
? ? ? ? ? ? array[i] = array[k];
? ? ? ? ? ? array[k] = temp;
? ? ? ? }
? ? }
}
int main(int argc, const char * argv[]) {
? ? int array[] = {1,25,8,22,2};
?? ?
? ? selectsort(array, 5);
?? ?
? ? for (int i = 0; i < 5; i++) {
? ? ? ? printf("%d ", array[i]);
? ? }
? ? printf("\n");
? ? return 0;
}
二.快速排序
#include <stdio.h>
?
void quicksort(int array[],int low,int high){
? ? int i = low;
? ? int j = high;
?? ?
? ? int temp = array[low];
?? ?
? ? if (low < high) {
? ? ? ? while (i<j) {
? ? ? ? ? ? while (i < j&& array[j] >= temp) {
? ? ? ? ? ? ? ? j--;
? ? ? ? ? ? }
? ? ? ? ? ? array[i] = array[j];
?? ? ? ? ? ?
? ? ? ? ? ? while (i < j && array[i] <= temp) {
? ? ? ? ? ? ? ? i ++;
? ? ? ? ? ? }
? ? ? ? ? ? array[j] = array[i];
? ? ? ? ? ? ? ? ? ? }
? ? ? ? array[i] = temp;
?? ? ? ?
? ? ? ? quicksort(array,0,i-1);
?? ? ? ?
? ? ? ? quicksort(array,i+1,high);
? ? }
}
?
int main(int argc,const char * argv[]){
? ? int array[] = {3,1,9,2,8,3,7,4};
?? ?
? ? quicksort(array, 0, 7);
?? ?
? ? for (int i = 0;i < 8;i++) {
? ? ? ? printf("%d ",array[i]);
? ? }
? ? printf("\n");
? ? return 0;
}
三.直接排序
#include <stdio.h>
?
void insertsort(int? array[],int elementNum){
? ? int referenceNum = 0;
?? ?
? ? for (int i = 1; i < elementNum; i ++) {
? ? ? ? referenceNum = array[i];
?? ? ? ?
? ? ? ? int j =i - 1;
?? ? ? ?
? ? ? ? for (; j>= 0; j--) {
? ? ? ? ? ? if (array[j] > referenceNum) {
? ? ? ? ? ? ? ? array[j+1] = array[j];
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if (j+1 != i ) {
? ? ? ? ? ? array[j+1] = referenceNum;
? ? ? ? }
? ? }
}
int main(int argc,const char * argv[]){
? ? int array[] = {5,4,6,2,1};
?? ?
? ? insertsort(array, 5);
?? ?
? ? for (int i = 0; i < 5; i ++) {
? ? ? ? printf("%d ",array[i]);
? ? }
? ? printf("\n");
? ? return 0;
}
?
轉載于:https://www.cnblogs.com/liuzhicen/p/5033812.html
總結
以上是生活随笔為你收集整理的12-09关于几种排序方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个口是心非的个性签名!
- 下一篇: 爱情公寓主题曲是谁唱的啊?