日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

元素分界线

發布時間:2024/1/18 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 元素分界线 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述:以第一個元素為基準,將所有小于等于它的元素移動到該元素的前面,將所有大于它的元素移動到該元素的后面。

#include<stdio.h> #include"sqlist.cpp" /* 設計一個算法,以第一個元素為分界線, 將所有小于它的元素移到該元素的前面, 將所有大于它的元素移到該元素的后面。 */ void Move1(SqList *&L) {int i=0,j=L->length -1;//定義i和j兩個指針,i指針指向第一個元素,j指針指向最后一個元素 ElemType temp;ElemType pivot=L->data [0];//以data[0]為基準 while(i<j)//從區間兩端交替向中間掃描,直至i=j為止{while(j>i && L->data [j]>pivot)j--;//從右向左掃描,找一個小于等于pivot的元素while(i<j && L->data [i]<=pivot)i++;//從左向右掃描,找一個大于pivot的元素if(i<j)//L->data [i] <--> L->data [j]{temp = L->data [i];L->data [i] = L->data [j];L->data [j] = temp;}//以下輸出每一趟的結果for(int k=0;k<L->length ;k++){printf("%2d",L->data [k]);} printf("\n");}//L->data [0] <--> L->data [j]temp = L->data [0];L->data [0] = L->data [j];L->data [j] = temp;printf("基準位置i=%d\n",i); }int main(int argc,char *argv[]) {SqList *L;ElemType a[10];printf("請輸入10個正整數:");for(int m=0;m<10;m++)scanf("%d",&a[m]);CreateList(L,a,10);printf("L:");DisplayList(L);printf("執行移動運算\n");Move1(L);printf("L:");DisplayList(L);DestroyList(L);return 0; }

解法2:

#include<stdio.h> #include"sqlist.cpp" /* 設計一個算法,以第一個元素為分界線, 將所有小于它的元素移到該元素的前面, 將所有大于它的元素移到該元素的后面。 */ void Move2(SqList *&L) {int i=0,j=L->length -1;//定義i和j兩個指針,i指針指向第一個元素,j指針指向最后一個元素 ElemType pivot=L->data [0];//以data[0]為基準 while(i<j)//從區間兩端交替向中間掃描,直至i=j為止{while(j>i && L->data [j]>pivot)j--;//從右向左掃描,找一個小于等于pivot的元素L->data [i] = L->data [j];i++;while(i<j && L->data [i]<=pivot)i++;//從左向右掃描,找一個大于pivot的元素L->data [j] = L->data [i];j--;//以下輸出每一趟的結果for(int k=0;k<L->length ;k++){printf("%2d",L->data [k]);} printf("\n");}L->data [i] = pivot;printf("基準位置i=%d\n",i); }int main(int argc,char *argv[]) {SqList *L;ElemType a[10];printf("請輸入10個正整數:");for(int m=0;m<10;m++)scanf("%d",&a[m]);CreateList(L,a,10);printf("L:");DisplayList(L);printf("執行移動運算\n");Move2(L);printf("L:");DisplayList(L);DestroyList(L);return 0; }

?

?

總結

以上是生活随笔為你收集整理的元素分界线的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。